📄 cswpersistenceservice.java
字号:
* @throws PersonalizationException Thrown if there was an exception with the
* {@link IPersonalizationContext}.
* @throws IllegalStateException Thrown if the {@link IPersonalizationContext} has
* not been set.
*/
public List<CswPersistenceObject> retrieveAll()
throws PersonalizationException {
List<CswPersistenceObject> objs = new ArrayList<CswPersistenceObject>();
if (_personalizationContext == null) {
throw new IllegalStateException("Personalization context not set");
}
for (IQuery q : getSavedQueries()) {
objs.add(createPersistenceObject(q));
}
return objs;
}
/**
* Utility method to create a {@link AttributeType} given the key
* and value.
*
* @param name The key of the key/value pair.
* @param value The value of the key/value pair.
* @return The created {@link AttributeType}.
*/
private AttributeType createAttributeType(String name, String value) {
ObjectFactory factory = null;
AttributeType a = null;
try {
factory = new ObjectFactory();
a = factory.createAttributeType();
a.setName(name);
a.setValue(value);
} catch (JAXBException ex) {
LOG.warn("JAXBException occurred creating object factory", ex);
}
return a;
}
/**
* Utility method to extract all the persistence attributes from the
* given {@link CswPersistenceObject}. Create an {@link ArrayList} of all the
* generated {@link AttributeType}.
*
* @param obj The {@link CswPersistenceObject} containing all the search
* attributes.
* @return {@link ArrayList} of generated {@link AttributeType}.
*/
private ArrayList<AttributeType> generatePersistenceAttributes(
CswPersistenceObject obj) {
ArrayList<AttributeType> attrs = new ArrayList<AttributeType>();
attrs.add(createAttributeType(CswPersistenceObject.SEARCH_TERM_KEY,
obj.getAttribute(CswPersistenceObject.SEARCH_TERM_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.LIVE_DATA_KEY,
obj.getAttribute(CswPersistenceObject.LIVE_DATA_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.ADVANCED_QUERY_KEY,
obj.getAttribute(CswPersistenceObject.ADVANCED_QUERY_KEY)));
attrs.add(createAttributeType(
CswPersistenceObject.USE_DATA_CATEGORIES,
obj.getAttribute(CswPersistenceObject.USE_DATA_CATEGORIES)));
attrs.add(createAttributeType(CswPersistenceObject.AGRICULTURE_KEY,
obj.getAttribute(CswPersistenceObject.AGRICULTURE_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.BIOLOGY_KEY,
obj.getAttribute(CswPersistenceObject.BIOLOGY_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.ADMIN_KEY,
obj.getAttribute(CswPersistenceObject.ADMIN_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.ATMOSPHERIC_KEY,
obj.getAttribute(CswPersistenceObject.ATMOSPHERIC_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.BUSINESS_KEY,
obj.getAttribute(CswPersistenceObject.BUSINESS_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.ELEVATION_KEY,
obj.getAttribute(CswPersistenceObject.ELEVATION_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.ENVIRONMENT_KEY,
obj.getAttribute(CswPersistenceObject.ENVIRONMENT_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.GEOLOGICAL_KEY,
obj.getAttribute(CswPersistenceObject.GEOLOGICAL_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.HUMAN_KEY,
obj.getAttribute(CswPersistenceObject.HUMAN_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.IMAGERY_KEY,
obj.getAttribute(CswPersistenceObject.IMAGERY_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.MILITARY_KEY,
obj.getAttribute(CswPersistenceObject.MILITARY_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.INLAND_KEY,
obj.getAttribute(CswPersistenceObject.INLAND_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.LOCATIONS_KEY,
obj.getAttribute(CswPersistenceObject.LOCATIONS_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.OCEANS_KEY,
obj.getAttribute(CswPersistenceObject.OCEANS_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.CADASTRAL_KEY,
obj.getAttribute(CswPersistenceObject.CADASTRAL_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.CULTURAL_KEY,
obj.getAttribute(CswPersistenceObject.CULTURAL_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.FACILITIES_KEY,
obj.getAttribute(CswPersistenceObject.FACILITIES_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.TRANSPORTATION_KEY,
obj.getAttribute(CswPersistenceObject.TRANSPORTATION_KEY)));
attrs.add(createAttributeType(CswPersistenceObject.UTILITIES_KEY,
obj.getAttribute(CswPersistenceObject.UTILITIES_KEY)));
attrs.add(createAttributeType(
CswPersistenceObject.QUERY_OVERLAP_EXTENT_KEY,
obj.getAttribute(CswPersistenceObject.QUERY_OVERLAP_EXTENT_KEY)));
return attrs;
}
/**
* Utility method to create a {@link SpatialFilter} from the given
* {@link CswPersistenceObject}. This method will extract the geography
* extent information from the <code>obj</code> argument.
*
* @param obj The {@link CswPersistenceObject} containing the spatial query
* information.
* @return New {@link SpatialFilter}.
*/
private SpatialFilter generateSpatialFilter(CswPersistenceObject obj) {
SpatialFilter filter = null;
EnvelopeN envelope = null;
ObjectFactory factory = null;
if (obj == null) {
throw new NullPointerException("persistence object cannot be null");
}
try {
factory = new ObjectFactory();
filter = factory.createSpatialFilter();
envelope = factory.createEnvelopeN();
envelope.setXMin(Double.valueOf(obj.getAttribute(
CswPersistenceObject.QUERY_EXTENT_XMIN)));
envelope.setYMin(Double.valueOf(obj.getAttribute(
CswPersistenceObject.QUERY_EXTENT_YMIN)));
envelope.setXMax(Double.valueOf(obj.getAttribute(
CswPersistenceObject.QUERY_EXTENT_XMAX)));
envelope.setYMax(Double.valueOf(obj.getAttribute(
CswPersistenceObject.QUERY_EXTENT_YMAX)));
filter.setEnvelopeN(envelope);
filter.setWhereClause("");
filter.setSearchOrder("");
filter.setSpatialRel("");
filter.setSpatialRelDescription("");
filter.setGeometryFieldName("");
} catch (JAXBException ex) {
LOG.warn("JAXBException occurred creating spatial filter", ex);
}
return filter;
}
/**
* Utility method to create a go-between {@link CswPersistenceObject} object from
* an {@link IQuery}.
*
* @param query The {@link IQuery} used to create the {@link CswPersistenceObject}.
* @return New {@link CswPersistenceObject} representing the CS/W query.
* @throws PersonalizationException Thrown if there was an exception with the
* {@link IPersonalizationContext}.
* @throws NullPointerException Thrown if the <code>query</code> argument is <code>null</code>.
*/
private CswPersistenceObject createPersistenceObject(IQuery query)
throws PersonalizationException {
CswPersistenceObject obj = null;
CatalogQueryType catalogQuery = null;
EnvelopeN envelope = null;
if (query == null) {
throw new NullPointerException("query cannot be null");
}
if (!(query.getQuery() instanceof CatalogQueryType)) {
throw new IllegalArgumentException("Invalid query, query type: " +
query.getType().name() + " is not supported.");
}
obj = new CswPersistenceObject();
obj.setAttribute(CswPersistenceObject.QUERY_NAME_KEY, query.getName());
obj.setAttribute(CswPersistenceObject.QUERY_DESCRIPTION_KEY,
query.getDescription());
obj.setAttribute(CswPersistenceObject.QUERY_ID_KEY,
query.getId().toString());
obj.setAttribute(CswPersistenceObject.MAX_RESULTS_KEY,
String.valueOf(query.getQuery().getMaxResults()));
catalogQuery = (CatalogQueryType) query.getQuery();
obj.setAttribute(CswPersistenceObject.CATALOG_ID_KEY,
catalogQuery.getCatalogService().getId());
envelope = (EnvelopeN) catalogQuery.getSpatialFilter().getEnvelopeN();
obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_XMIN,
String.valueOf(envelope.getXMin()));
obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_YMIN,
String.valueOf(envelope.getYMin()));
obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_XMAX,
String.valueOf(envelope.getXMax()));
obj.setAttribute(CswPersistenceObject.QUERY_EXTENT_YMAX,
String.valueOf(envelope.getYMax()));
obj.setAttribute(CswPersistenceObject.SEARCH_TERM_KEY,
getExtendedAttributeValue(query,
CswPersistenceObject.SEARCH_TERM_KEY));
obj.setAttribute(CswPersistenceObject.LIVE_DATA_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.LIVE_DATA_KEY));
obj.setAttribute(CswPersistenceObject.ADVANCED_QUERY_KEY,
getExtendedAttributeValue(query,
CswPersistenceObject.ADVANCED_QUERY_KEY));
obj.setAttribute(CswPersistenceObject.USE_DATA_CATEGORIES,
getExtendedAttributeValue(query,
CswPersistenceObject.USE_DATA_CATEGORIES));
obj.setAttribute(CswPersistenceObject.AGRICULTURE_KEY,
getExtendedAttributeValue(query,
CswPersistenceObject.AGRICULTURE_KEY));
obj.setAttribute(CswPersistenceObject.BIOLOGY_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.BIOLOGY_KEY));
obj.setAttribute(CswPersistenceObject.ADMIN_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.ADMIN_KEY));
obj.setAttribute(CswPersistenceObject.ATMOSPHERIC_KEY,
getExtendedAttributeValue(query,
CswPersistenceObject.ATMOSPHERIC_KEY));
obj.setAttribute(CswPersistenceObject.BUSINESS_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.BUSINESS_KEY));
obj.setAttribute(CswPersistenceObject.ELEVATION_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.ELEVATION_KEY));
obj.setAttribute(CswPersistenceObject.ENVIRONMENT_KEY,
getExtendedAttributeValue(query,
CswPersistenceObject.ENVIRONMENT_KEY));
obj.setAttribute(CswPersistenceObject.GEOLOGICAL_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.GEOLOGICAL_KEY));
obj.setAttribute(CswPersistenceObject.HUMAN_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.HUMAN_KEY));
obj.setAttribute(CswPersistenceObject.IMAGERY_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.IMAGERY_KEY));
obj.setAttribute(CswPersistenceObject.MILITARY_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.MILITARY_KEY));
obj.setAttribute(CswPersistenceObject.INLAND_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.INLAND_KEY));
obj.setAttribute(CswPersistenceObject.LOCATIONS_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.LOCATIONS_KEY));
obj.setAttribute(CswPersistenceObject.OCEANS_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.OCEANS_KEY));
obj.setAttribute(CswPersistenceObject.CADASTRAL_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.CADASTRAL_KEY));
obj.setAttribute(CswPersistenceObject.CULTURAL_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.CULTURAL_KEY));
obj.setAttribute(CswPersistenceObject.FACILITIES_KEY,
getExtendedAttributeValue(query, CswPersistenceObject.FACILITIES_KEY));
obj.setAttribute(CswPersistenceObject.TRANSPORTATION_KEY,
getExtendedAttributeValue(query,
CswPersistenceObject.TRANSPORTATION_KEY));
obj.setAttribute(CswPersistenceObject.UTILITIES_KEY,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -