use of eu.esdihumboldt.hale.common.core.io.report.IOReport in project hale by halestudio.
the class ArchiveProjectWriter method createProjectArchive.
/**
* Creates the project archive.
*
* @param target {@link OutputStream} to write the archive to
* @param reporter the reporter to use for the execution report
* @param progress the progress indicator
* @return the execution report
* @throws IOException if an I/O operation fails
* @throws IOProviderConfigurationException if the I/O provider was not
* configured properly
*/
public IOReport createProjectArchive(OutputStream target, IOReporter reporter, ProgressIndicator progress) throws IOException, IOProviderConfigurationException {
ZipOutputStream zip = new ZipOutputStream(target);
// all files related to the project are copied into a temporary
// directory first and then packed into a zip file
// create temporary directory and project file
File tempDir = Files.createTempDir();
File baseFile = new File(tempDir, "project.halex");
// mark the temporary directory for clean-up if the project is closed
CleanupService clean = HalePlatform.getService(CleanupService.class);
if (clean != null) {
clean.addTemporaryFiles(CleanupContext.PROJECT, tempDir);
}
LocatableOutputSupplier<OutputStream> out = new FileIOSupplier(baseFile);
// false is correct if getParameter is null because false is default
boolean includeWebresources = getParameter(INCLUDE_WEB_RESOURCES).as(Boolean.class, false);
SubtaskProgressIndicator subtask = new SubtaskProgressIndicator(progress);
// save old IO configurations
List<IOConfiguration> oldResources = new ArrayList<IOConfiguration>();
for (int i = 0; i < getProject().getResources().size(); i++) {
// clone all IO configurations to work on different objects
oldResources.add(getProject().getResources().get(i).clone());
}
IOConfiguration config = getProject().getSaveConfiguration();
if (config == null) {
config = new IOConfiguration();
}
IOConfiguration oldSaveConfig = config.clone();
// copy resources to the temp directory and update xml schemas
updateResources(tempDir, includeWebresources, subtask, reporter);
// update target save configuration of the project
config.getProviderConfiguration().put(PARAM_TARGET, Value.of(baseFile.toURI().toString()));
// write project file via XMLProjectWriter
XMLProjectWriter writer = new XMLProjectWriter();
writer.setTarget(out);
writer.setProject(getProject());
writer.setProjectFiles(getProjectFiles());
IOReport report = writer.execute(progress, reporter);
// now after the project with its project files is written, look for the
// alignment file and update it
ProjectFileInfo newAlignmentInfo = getAlignmentFile(getProject());
if (newAlignmentInfo != null) {
URI newAlignment = tempDir.toURI().resolve(newAlignmentInfo.getLocation());
XMLAlignmentUpdater.update(new File(newAlignment), newAlignment, includeWebresources, reporter);
}
// put the complete temp directory into a zip file
IOUtils.zipDirectory(tempDir, zip);
zip.close();
// the files may not be deleted now as they will be needed if the
// project is saved again w/o loading it first
// update the relative resource locations
LocationUpdater updater = new LocationUpdater(getProject(), out.getLocation());
// resources are made absolute (else they can't be found afterwards),
// e.g. when saving the project again before loading it
updater.updateProject(false);
// reset the save configurations that has been overridden by the XML
// project writer
getProject().setSaveConfiguration(oldSaveConfig);
if (clean == null) {
// if no clean service is available, assume the directory is not
// needed anymore
FileUtils.deleteDirectory(tempDir);
}
return report;
}
use of eu.esdihumboldt.hale.common.core.io.report.IOReport in project hale by halestudio.
the class FilterTest method simpleSchemaTestECQL.
@Test
public void simpleSchemaTestECQL() throws Exception {
ShapeSchemaReader schemaReader = new ShapeSchemaReader();
schemaReader.setSource(new DefaultInputSupplier(getClass().getResource("/testdata/GN_Point/GN_Point.shp").toURI()));
schemaReader.validate();
IOReport report = schemaReader.execute(null);
assertTrue(report.isSuccess());
Schema schema = schemaReader.getSchema();
ShapeInstanceReader instanceReader = new ShapeInstanceReader();
instanceReader.setSource(new DefaultInputSupplier(getClass().getResource("/testdata/GN_Point/GN_Point.shp").toURI()));
instanceReader.setSourceSchema(schema);
instanceReader.validate();
report = instanceReader.execute(null);
assertTrue(report.isSuccess());
InstanceCollection instances = instanceReader.getInstances();
assertFalse(instances.isEmpty());
ResourceIterator<Instance> ri = instances.iterator();
try {
boolean foundIt = false;
boolean stayFalse = false;
boolean stayFalseToo = false;
Filter cqlfilter = new FilterGeoECqlImpl("NEV = 'Piritulus'");
Filter foulfilter = new FilterGeoECqlImpl("HERP = 'DERP'");
Filter foulfilter1 = new FilterGeoECqlImpl("NEV = 'HURR'");
while (ri.hasNext()) {
Instance inst = ri.next();
assertNotNull(inst);
if (cqlfilter.match(inst)) {
foundIt = true;
}
if (foulfilter.match(inst)) {
stayFalse = true;
}
if (foulfilter1.match(inst)) {
stayFalseToo = true;
}
}
assertTrue(foundIt);
assertFalse(stayFalse);
assertFalse(stayFalseToo);
} finally {
ri.close();
}
}
use of eu.esdihumboldt.hale.common.core.io.report.IOReport in project hale by halestudio.
the class FilterTest method loadXMLInstances.
private InstanceCollection loadXMLInstances(URI schemaLocation, URI xmlLocation) throws IOException, IOProviderConfigurationException {
SchemaReader reader = new XmlSchemaReader();
reader.setSharedTypes(null);
reader.setSource(new DefaultInputSupplier(schemaLocation));
IOReport schemaReport = reader.execute(null);
assertTrue(schemaReport.isSuccess());
Schema sourceSchema = reader.getSchema();
//
InstanceReader instanceReader = new XmlInstanceReader();
instanceReader.setSource(new DefaultInputSupplier(xmlLocation));
instanceReader.setSourceSchema(sourceSchema);
IOReport instanceReport = instanceReader.execute(null);
assertTrue(instanceReport.isSuccess());
return instanceReader.getInstances();
}
use of eu.esdihumboldt.hale.common.core.io.report.IOReport in project hale by halestudio.
the class TestUtil method loadInstances.
/**
* Loads an instance collection from the specified XML file with the given
* source types.
*
* @param location the URI specifying the location of the xml instance file
* @param types the type index
* @return the loaded instance collection
* @throws IOException if loading the instance failed
* @throws IOProviderConfigurationException if configuring the instance
* reader failed
*/
public static InstanceCollection loadInstances(URI location, Schema types) throws IOProviderConfigurationException, IOException {
DefaultInputSupplier input = new DefaultInputSupplier(location);
XmlInstanceReader instanceReader = new XmlInstanceReader();
instanceReader.setSource(input);
instanceReader.setSourceSchema(types);
IOReport report = instanceReader.execute(null);
assertTrue(report.isSuccess());
assertTrue("Errors are contained in the report", report.getErrors().isEmpty());
return instanceReader.getInstances();
}
use of eu.esdihumboldt.hale.common.core.io.report.IOReport in project hale by halestudio.
the class TestUtil method loadSchema.
/**
* Loads the specified XML Schema.
*
* @param location the URI specifying the location of the schema
* @return the loaded schema
* @throws IOProviderConfigurationException if the schema reader
* configuration failed
* @throws IOException if the schema could not be loaded
*/
public static Schema loadSchema(URI location) throws IOProviderConfigurationException, IOException {
DefaultInputSupplier input = new DefaultInputSupplier(location);
XmlSchemaReader reader = new XmlSchemaReader();
reader.setSharedTypes(new DefaultTypeIndex());
reader.setSource(input);
reader.validate();
IOReport report = reader.execute(null);
assertTrue(report.isSuccess());
assertTrue("Errors are contained in the report", report.getErrors().isEmpty());
return reader.getSchema();
}
Aggregations