📄 mockdata.java
字号:
/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
package org.geoserver.data.test;
import org.geoserver.data.CatalogWriter;
import org.geotools.data.property.PropertyDataStoreFactory;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import javax.xml.namespace.QName;
/**
* Class used to build a mock GeoServer data directory.
* <p>
* Data is based off the wms and wfs "cite" datasets.
* </p>
*
* @author Justin Deoliveira, The Open Planning Project
*
*/
public class MockData {
// //// WMS 1.1.1
/**
* WMS 1.1.1 cite namespace + uri
*/
public static String CITE_PREFIX = "cite";
public static String CITE_URI = "http://www.opengis.net/cite";
/** featuretype name for WMS 1.1.1 CITE BasicPolygons features */
public static QName BASIC_POLYGONS = new QName(CITE_URI, "BasicPolygons", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Bridges features */
public static QName BRIDGES = new QName(CITE_URI, "Bridges", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Buildings features */
public static QName BUILDINGS = new QName(CITE_URI, "Buildings", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Divided Routes features */
public static QName DIVIDED_ROUTES = new QName(CITE_URI, "DividedRoutes", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Forests features */
public static QName FORESTS = new QName(CITE_URI, "Forests", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Lakes features */
public static QName LAKES = new QName(CITE_URI, "Lakes", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Map Neatliine features */
public static QName MAP_NEATLINE = new QName(CITE_URI, "MapNeatline", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Named Places features */
public static QName NAMED_PLACES = new QName(CITE_URI, "NamedPlaces", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Ponds features */
public static QName PONDS = new QName(CITE_URI, "Ponds", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Road Segments features */
public static QName ROAD_SEGMENTS = new QName(CITE_URI, "RoadSegments", CITE_PREFIX);
/** featuretype name for WMS 1.1.1 CITE Streams features */
public static QName STREAMS = new QName(CITE_URI, "Streams", CITE_PREFIX);
// /// WFS 1.0
/**
* WFS 1.0 cdf namespace + uri
*/
public static String CDF_PREFIX = "cdf";
public static String CDF_URI = "http://www.opengis.net/cite/data";
/** featuretype name for WFS 1.0 CITE Deletes features */
public static QName DELETES = new QName(CDF_URI, "Deletes", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Fifteen features */
public static QName FIFTEEN = new QName(CDF_URI, "Fifteen", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Inserts features */
public static QName INSERTS = new QName(CDF_URI, "Inserts", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Inserts features */
public static QName LOCKS = new QName(CDF_URI, "Locks", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Nulls features */
public static QName NULLS = new QName(CDF_URI, "Nulls", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Other features */
public static QName OTHER = new QName(CDF_URI, "Other", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Nulls features */
public static QName SEVEN = new QName(CDF_URI, "Seven", CDF_PREFIX);
/** featuretype name for WFS 1.0 CITE Updates features */
public static QName UPDATES = new QName(CDF_URI, "Updates", CDF_PREFIX);
/**
* cgf namespace + uri
*/
public static String CGF_PREFIX = "cgf";
public static String CGF_URI = "http://www.opengis.net/cite/geometry";
/** featuretype name for WFS 1.0 CITE Lines features */
public static QName LINES = new QName(CGF_URI, "Lines", CGF_PREFIX);
/** featuretype name for WFS 1.0 CITE MLines features */
public static QName MLINES = new QName(CGF_URI, "MLines", CGF_PREFIX);
/** featuretype name for WFS 1.0 CITE MPoints features */
public static QName MPOINTS = new QName(CGF_URI, "MPoints", CGF_PREFIX);
/** featuretype name for WFS 1.0 CITE MPolygons features */
public static QName MPOLYGONS = new QName(CGF_URI, "MPolygons", CGF_PREFIX);
/** featuretype name for WFS 1.0 CITE Points features */
public static QName POINTS = new QName(CGF_URI, "Points", CGF_PREFIX);
/** featuretype name for WFS 1.0 CITE Polygons features */
public static QName POLYGONS = new QName(CGF_URI, "Polygons", CGF_PREFIX);
// //// WFS 1.1
/**
* sf namespace + uri
*/
public static String SF_PREFIX = "sf";
public static String SF_URI = "http://cite.opengeospatial.org/gmlsf";
public static QName PRIMITIVEGEOFEATURE = new QName(SF_URI, "PrimitiveGeoFeature", SF_PREFIX);
public static QName AGGREGATEGEOFEATURE = new QName(SF_URI, "AggregateGeoFeature", SF_PREFIX);
public static QName GENERICENTITY = new QName(SF_URI, "GenericEntity", SF_PREFIX);
// DEFAULT
public static String DEFAULT_PREFIX = "gs";
public static String DEFAULT_URI = "http://geoserver.org";
// public static QName ENTIT\u00C9G\u00C9N\u00C9RIQUE = new QName( SF_URI,
// "Entit\u00E9G\u00E9n\u00E9rique", SF_PREFIX );
// Extra types
public static QName GEOMETRYLESS = new QName(CITE_URI, "Geometryless", CITE_PREFIX);
/**
* List of all cite types names
*/
public static QName[] TYPENAMES = new QName[] {
// WMS 1.1.1
BASIC_POLYGONS, BRIDGES, BUILDINGS, DIVIDED_ROUTES, FORESTS, LAKES, MAP_NEATLINE,
NAMED_PLACES, PONDS, ROAD_SEGMENTS, STREAMS, // WFS 1.0
DELETES, FIFTEEN, INSERTS, LOCKS, NULLS, OTHER, SEVEN, UPDATES, LINES, MLINES, MPOINTS,
MPOLYGONS, POINTS, POLYGONS, // WFS 1.1
PRIMITIVEGEOFEATURE, AGGREGATEGEOFEATURE, GENERICENTITY, GEOMETRYLESS /* ENTIT\u00C9G\u00C9N\u00C9RIQUE */
};
/**
* List of wms type names.
*/
public static QName[] WMS_TYPENAMES = new QName[] {
BASIC_POLYGONS, BRIDGES, BUILDINGS, DIVIDED_ROUTES, FORESTS, LAKES, MAP_NEATLINE,
NAMED_PLACES, PONDS, ROAD_SEGMENTS, STREAMS
};
/**
* List of wfs 1.0 type names.
*/
public static QName[] WFS10_TYPENAMES = new QName[] {
DELETES, FIFTEEN, INSERTS, LOCKS, NULLS, OTHER, SEVEN, UPDATES, LINES, MLINES, MPOINTS,
MPOLYGONS, POINTS, POLYGONS
};
/**
* List of wfs 1.1 type names.
*/
public static QName[] WFS11_TYPENAMES = new QName[] {
PRIMITIVEGEOFEATURE, AGGREGATEGEOFEATURE, GENERICENTITY /* ENTIT\u00C9G\u00C9N\u00C9RIQUE */
};
/** the base of the data directory */
File data;
/** the 'featureTypes' directory, under 'data' */
File featureTypes;
/** the 'styles' directory, under 'data' */
File styles;
/** the 'plugIns' directory under 'data */
File plugIns;
/** the 'validation' directory under 'data */
File validation;
/** the 'templates' director under 'data' */
File templates;
/**
* @param base
* Base of the GeoServer data directory.
*
* @throws IOException
*/
public MockData() throws IOException {
data = File.createTempFile("mock", "data");
}
/**
* @return The root of the data directory.
*/
public File getDataDirectoryRoot() {
return data;
}
/**
* @return the "featureTypes" directory under the root
*/
public File getFeatureTypesDirectory() {
return featureTypes;
}
/**
* Copies some content to a file under the base of the data directory.
* <p>
* The <code>location</code> is considred to be a path relative to the
* data directory root.
* </p>
* <p>
* Note that the resulting file will be deleted when {@link #tearDown()}
* is called.
* </p>
* @param input The content to copy.
* @param location A relative path
*/
public void copyTo(InputStream input, String location)
throws IOException {
copy(input, new File(getDataDirectoryRoot(), location));
}
/**
* Copies some content to a file udner a specific feature type directory
* of the data directory.
* Example:
* <p>
* <code>
* dd.copyToFeautreTypeDirectory(input,MockData.PrimitiveGeoFeature,"info.xml");
* </code>
* </p>
* @param input The content to copy.
* @param featureTypeName The name of the feature type.
* @param location The resulting location to copy to relative to the
* feautre type directory.
*/
public void copyToFeatureTypeDirectory(InputStream input, QName featureTypeName, String location )
throws IOException {
copyTo(input, "featureTypes" + File.separator + featureTypeName.getPrefix()
+ "_" + featureTypeName.getLocalPart() + File.separator + location );
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -