Skip to content

Commit

Permalink
GEOS-7878: Detecting the version of the style being imported.
Browse files Browse the repository at this point in the history
 - fix assembly plugin deps

 - more logging on OWC context

 - fix importer issues on NetCDF files
  • Loading branch information
jdeolive authored and afabiani committed Dec 9, 2016
1 parent 96cdba9 commit 1cf0a88
Show file tree
Hide file tree
Showing 7 changed files with 213 additions and 156 deletions.
52 changes: 22 additions & 30 deletions src/community/release/ext-wps-remote.xml
Expand Up @@ -10,42 +10,34 @@
<outputDirectory></outputDirectory>
<includes>
<include>gs-wps-remote*.jar</include>
<include>bcprov*.jar</include>
<include>common*.jar</include>
<include>dnsjava*.jar</include>
<include>ehcache*.jar</include>
<include>freemarker*.jar</include>
<include>geodb*.jar</include>
<include>GeographicLib*.jar</include>
<include>*commons-beanutils*.jar</include>
<include>*commons-exec*.jar</include>
<include>*commons-vfs2*.jar</include>
<include>*dnsjava*.jar</include>
<include>*geodb*.jar</include>
<include>*importer*.jar</include>
<include>*geojson*.jar</include>
<include>hamcrest*.jar</include>
<include>hatbox*.jar</include>
<include>http*.jar</include>
<include>icu4j*.jar</include>
<include>imageio*.jar</include>
<include>jasypt*.jar</include>
<include>javacsv*.jar</include>
<include>jbosh*.jar</include>
<include>jdom*.jar</include>
<include>jetty*.jar</include>
<include>json*.jar</include>
<include>jgridshift*.jar</include>
<include>jmf*.jar</include>
<include>jsqlparser*.jar</include>
<include>jsr*.jar</include>
<include>jt*.jar</include>
<include>mail*.jar</include>
<include>mina*.jar</include>
<include>picocontainer*.jar</include>
<include>*smack*.jar</include>
<include>*hamcrest*.jar</include>
<include>*hatbox*.jar</include>
<include>*httpclient*.jar</include>
<include>*httpcore*.jar</include>
<include>*icu4j*.jar</include>
<include>*javacsv*.jar</include>
<include>*jbosh*.jar</include>
<include>*jetty*.jar</include>
<include>*jmf*.jar</include>
<include>*jsqlparser*.jar</include>
<include>*jtds*.jar</include>
<include>*jzlib*.jar</include>
<include>*pyrolite*.jar</include>
<include>*smack*.jar</include>
<include>*spark*.jar</include>
<include>*mina*.jar</include>
<include>*nbxml*.jar</include>
<include>*plexus*.jar</include>
<include>*regexp*.jar</include>
<include>*vysper*.jar</include>
<include>*xep*.jar</include>
<include>*xmpp*.jar</include>
<include>xml*.jar</include>
<include>xpp3*.jar</include>
</includes>
</fileSet>
</fileSets>
Expand Down
Expand Up @@ -25,6 +25,7 @@
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.catalog.StyleInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.catalog.impl.CoverageInfoImpl;
import org.geoserver.catalog.impl.DimensionInfoImpl;
import org.geoserver.config.GeoServer;
import org.geoserver.importer.ImportContext;
Expand Down Expand Up @@ -308,22 +309,21 @@ public LayerInfo importLayer(File file, String type, DataStoreInfo store, String
: importer.createContext(new SpatialFile(file)));

if (context.getTasks() != null && context.getTasks().size() > 0) {
WorkspaceInfo ws = null;
ImportTask task = context.getTasks().get(0);

if (targetWorkspace != null) {

LOGGER.fine(
" - [Remote Process Client - importLayer] Looking for Workspace in the catalog:"
+ targetWorkspace);

WorkspaceInfo ws = importer.getCatalog().getWorkspaceByName(targetWorkspace);
ws = importer.getCatalog().getWorkspaceByName(targetWorkspace);
if (ws != null) {

LOGGER.fine(" - [Remote Process Client - importLayer] Workspace found:" + ws);

context.setTargetWorkspace(ws);
} else {

LOGGER.fine(
" - [Remote Process Client - importLayer] Workspace *NOT* found - using the Default one:"
+ importer.getCatalog().getDefaultWorkspace());
Expand All @@ -343,108 +343,127 @@ public LayerInfo importLayer(File file, String type, DataStoreInfo store, String
}
}

if (name != null)
if (name != null) {
task.getLayer().setName(name);
if (title != null)
}
if (title != null) {
task.getLayer().setTitle(title);
if (description != null)
}
if (description != null) {
task.getLayer().setAbstract(description);

if (metadata != null)
}
if (metadata != null) {
task.getLayer().getMetadata().put("owc_properties", metadata);
}
// AF: Importer ISSUE -> The target workspace is not honored
/*if (task.getLayer().getResource() != null) {
if (ws != null) {
task.getLayer().getResource().getStore().setWorkspace(ws);
}
importer.run(context);

if (context.getState() == ImportContext.State.COMPLETE) {
if (context.getTasks() != null && context.getTasks().size() > 0) {
// ImportTask task = context.getTasks().get(0);
// assertEquals(ImportTask.State.READY, task.getState());

// assertEquals("the layer name", task.getLayer().getResource().getName());

task = context.getTasks().get(0);

// WARNING: The Importer Configures Just The First Layer
if (task.getLayer().getResource() instanceof CoverageInfo) {
CoverageInfo ci = ((CoverageInfo) task.getLayer().getResource());

GridCoverageReader reader = null;
try {
reader = ci.getGridCoverageReader(null, null);

String[] cvNames = reader.getGridCoverageNames();

if (cvNames != null && cvNames.length > 0) {
final String nativeCoverageName = cvNames[0];

ci.setNativeCoverageName(nativeCoverageName);

// if(type.equals("application/x-netcdf")) Set Dimensions
if (reader instanceof StructuredGridCoverage2DReader) {
StructuredGridCoverage2DReader structuredReader = ((StructuredGridCoverage2DReader) reader);
if (task.getLayer().getResource() instanceof CoverageInfo) {
((CoverageInfoImpl) task.getLayer().getResource()).setNativeCoverageName(name);
}
}*/

// Getting dimension descriptors
final List<DimensionDescriptor> dimensionDescriptors = structuredReader
.getDimensionDescriptors(nativeCoverageName);
DimensionDescriptor timeDimension = null;
DimensionDescriptor elevationDimension = null;
final List<DimensionDescriptor> customDimensions = new ArrayList<DimensionDescriptor>();
importer.run(context);

// Collect dimension Descriptor info
for (DimensionDescriptor dimensionDescriptor : dimensionDescriptors) {
if (dimensionDescriptor.getName()
.equalsIgnoreCase(ResourceInfo.TIME)) {
timeDimension = dimensionDescriptor;
} else if (dimensionDescriptor.getName()
.equalsIgnoreCase(ResourceInfo.ELEVATION)) {
elevationDimension = dimensionDescriptor;
} else {
customDimensions.add(dimensionDescriptor);
for (int importChecks=0; importChecks<10; importChecks++) {
if (context.getState() == ImportContext.State.COMPLETE) {
if (context.getTasks() != null && context.getTasks().size() > 0) {
// ImportTask task = context.getTasks().get(0);
// assertEquals(ImportTask.State.READY, task.getState());

// assertEquals("the layer name", task.getLayer().getResource().getName());

task = context.getTasks().get(0);

// WARNING: The Importer Configures Just The First Layer
if (task.getLayer().getResource() instanceof CoverageInfo) {
CoverageInfo ci = ((CoverageInfo) task.getLayer().getResource());

GridCoverageReader reader = null;
try {
reader = ci.getGridCoverageReader(null, null);

String[] cvNames = reader.getGridCoverageNames();

if (cvNames != null && cvNames.length > 0) {
final String nativeCoverageName = cvNames[0];

ci.setNativeCoverageName(nativeCoverageName);

// if(type.equals("application/x-netcdf")) Set Dimensions
if (reader instanceof StructuredGridCoverage2DReader) {
StructuredGridCoverage2DReader structuredReader = ((StructuredGridCoverage2DReader) reader);

// Getting dimension descriptors
final List<DimensionDescriptor> dimensionDescriptors = structuredReader
.getDimensionDescriptors(nativeCoverageName);
DimensionDescriptor timeDimension = null;
DimensionDescriptor elevationDimension = null;
final List<DimensionDescriptor> customDimensions = new ArrayList<DimensionDescriptor>();

// Collect dimension Descriptor info
for (DimensionDescriptor dimensionDescriptor : dimensionDescriptors) {
if (dimensionDescriptor.getName()
.equalsIgnoreCase(ResourceInfo.TIME)) {
timeDimension = dimensionDescriptor;
} else if (dimensionDescriptor.getName()
.equalsIgnoreCase(ResourceInfo.ELEVATION)) {
elevationDimension = dimensionDescriptor;
} else {
customDimensions.add(dimensionDescriptor);
}
}
}

final boolean defaultTimeNeeded = timeDimension != null;
final boolean defaultElevationNeeded = elevationDimension != null;
final boolean defaultTimeNeeded = timeDimension != null;
final boolean defaultElevationNeeded = elevationDimension != null;

// Create Default Time Dimension If Needed
if (defaultTimeNeeded) {
DimensionInfo di = new DimensionInfoImpl();
di.setEnabled(true);
di.setPresentation(DimensionPresentation.LIST);
di.setAttribute(timeDimension.getStartAttribute());
ci.getMetadata().put(ResourceInfo.TIME, di);
}
// Create Default Time Dimension If Needed
if (defaultTimeNeeded) {
DimensionInfo di = new DimensionInfoImpl();
di.setEnabled(true);
di.setPresentation(DimensionPresentation.LIST);
di.setAttribute(timeDimension.getStartAttribute());
ci.getMetadata().put(ResourceInfo.TIME, di);
}

// Create Default Elevation Dimension If Needed
if (defaultElevationNeeded) {
DimensionInfo di = new DimensionInfoImpl();
di.setEnabled(true);
di.setPresentation(DimensionPresentation.LIST);
di.setUnits("EPSG:5030");
di.setUnitSymbol("m");
di.setAttribute(elevationDimension.getStartAttribute());
ci.getMetadata().put(ResourceInfo.ELEVATION, di);
// Create Default Elevation Dimension If Needed
if (defaultElevationNeeded) {
DimensionInfo di = new DimensionInfoImpl();
di.setEnabled(true);
di.setPresentation(DimensionPresentation.LIST);
di.setUnits("EPSG:5030");
di.setUnitSymbol("m");
di.setAttribute(elevationDimension.getStartAttribute());
ci.getMetadata().put(ResourceInfo.ELEVATION, di);
}
}
}
} finally {
// WARNING: Disposing The Reader Causes The Catalog To Fail
/*if (reader != null) {
reader.dispose();
}*/
}
} finally {
// WARNING: Disposing The Reader Causes The Catalog To Fail
/*if (reader != null) {
reader.dispose();
}*/
}
}

LOGGER.fine(
" - [Remote Process Client - importLayer] The Importer has finished correctly for Spatial File:"
+ file.getAbsolutePath());
LOGGER.fine(
" - [Remote Process Client - importLayer] The Importer has finished correctly for Spatial File:"
+ file.getAbsolutePath());

return task.getLayer();
return task.getLayer();
} else {
break;
}
} else {
Thread.sleep(1500);
}
}
}

LOGGER.fine(
LOGGER.warning(
" - [Remote Process Client - importLayer] The Importer has finished *BUT* did not returned any layer for Spatial File:"
+ file.getAbsolutePath());

Expand Down
Expand Up @@ -6,7 +6,6 @@

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Array;
import java.net.InetAddress;
Expand Down Expand Up @@ -222,28 +221,8 @@ static enum CType {
// ----
PRIMITIVE_NAME_TYPE_MAP.put("application/owc",
new Object[] { RawData.class, CType.COMPLEX,
//new StringRawData("", "application/vnd.geo+json"),
new RawData() {

private String data = "";

@Override
public String getMimeType() {
return "application/vnd.geo+json";
}

@Override
public InputStream getInputStream() throws IOException {
return IOUtils.toInputStream(data);
}

@Override
public String getFileExtension() {
return "json";
}

},
"application/vnd.geo+json", ".json" });
new StringRawData("", "application/vnd.geo+json"), "application/vnd.geo+json",
".json" });

// ----
PRIMITIVE_NAME_TYPE_MAP.put("image/geotiff",
Expand Down
Expand Up @@ -6,7 +6,6 @@

import java.io.IOException;
import java.net.URLDecoder;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
Expand Down

0 comments on commit 1cf0a88

Please sign in to comment.