Project

General

Profile

« Previous | Next » 

Revision 6134

use Data Manager Library to parse EML when needed in DataONE classes.
(augmented DML to parse data format elements in EML to estimate MIME type)
https://redmine.dataone.org/issues/1634

View differences:

MetacatPopulator.java
44 44
import org.dataone.client.D1Client;
45 45
import org.dataone.client.MNode;
46 46
import org.dataone.client.ObjectFormatCache;
47
import org.dataone.eml.DataoneEMLParser;
48
import org.dataone.eml.EMLDocument;
49
import org.dataone.eml.EMLDocument.DistributionMetadata;
50 47
import org.dataone.service.types.AuthToken;
51 48
import org.dataone.service.types.Checksum;
52 49
import org.dataone.service.types.ChecksumAlgorithm;
......
55 52
import org.dataone.service.types.ObjectFormat;
56 53
import org.dataone.service.types.Subject;
57 54
import org.dataone.service.types.SystemMetadata;
55
import org.ecoinformatics.datamanager.DataManager;
56
import org.ecoinformatics.datamanager.database.DatabaseConnectionPoolInterface;
57
import org.ecoinformatics.datamanager.parser.DataPackage;
58 58

  
59 59
import edu.ucsb.nceas.metacat.MetaCatServlet;
60
import edu.ucsb.nceas.metacat.dataquery.MetacatDatabaseConnectionPoolFactory;
60 61
import edu.ucsb.nceas.metacat.properties.PropertyService;
61 62
import edu.ucsb.nceas.metacat.restservice.InputStreamDataSource;
62 63

  
......
139 140
            System.out.println("doctext: " + doctext);
140 141
            is = stringToStream(doctext);
141 142
            //parse the document
142
            DataoneEMLParser parser = DataoneEMLParser.getInstance();
143
            EMLDocument emld = parser.parseDocument(is);
144
            if(emld == null)
143
            DatabaseConnectionPoolInterface connectionPool = MetacatDatabaseConnectionPoolFactory.getDatabaseConnectionPoolInterface();
144
        	DataManager dataManager = DataManager.getInstance(connectionPool, connectionPool.getDBAdapterName());
145
        	DataPackage dataPackage = dataManager.parseMetadata(is);
146
        	
147
            if(dataPackage == null)
145 148
            {
146 149
                continue;
147 150
            }
......
152 155

  
153 156
            printHeader("creating document on destination " + destinationUrl);            
154 157
            SystemMetadata sysmeta = generateSystemMetadata(doc);
155
            for(int j=0; j<emld.distributionMetadata.size(); j++)
158
            for(int j=0; j < dataPackage.getEntityList().length; j++)
156 159
            {
157
                Identifier emlId = sysmeta.getIdentifier();
158
                DistributionMetadata dm = emld.distributionMetadata.elementAt(j);
159
                String dataDocUrl = dm.url;
160
                String dataDocMimeType = dm.mimeType;
160
                String dataDocUrl = dataPackage.getEntityList()[j].getURL();
161
                String dataDocMimeType = 
162
                	dataPackage.getEntityList()[j].getDataFormat();
163
                if (dataDocMimeType == null) {
164
	                dataDocMimeType = 
165
	                	ObjectFormatCache.getFormat("application/octet-stream").getFmtid().getValue();
166
                }
161 167
                String dataDocLocalId = "";
162 168
                if(dataDocUrl.trim().startsWith("ecogrid://knb/"))
163 169
                { //we only handle ecogrid urls right now
......
248 254
        logout();
249 255
    }
250 256
    
251
    /**
252
     * create the documents listed by an eml document as described in the 
253
     * new system
254
     * @param doc
255
     * @param emld
256
     */
257
    private void createDescribedDocuments(Document doc, EMLDocument emld)
258
    {
259
        
260
    }
257

  
261 258
    
262 259
    /**
263 260
     * @param doc

Also available in: Unified diff