use of org.commongeoregistry.adapter.metadata.AttributeLocalType in project geoprism-registry by terraframe.
the class ListTypeGeoObjectShapefileExporterTest method testCreateFeatures.
@Test
@Request
public void testCreateFeatures() {
ServerGeoObjectIF object = FastTestDataset.PROV_CENTRAL.getServerObject();
ServerGeoObjectType type = object.getType();
ListTypeShapefileExporter exporter = new ListTypeShapefileExporter(version, mdBusiness, mdAttributes, new JsonObject());
SimpleFeatureType featureType = exporter.createFeatureType();
FeatureCollection<SimpleFeatureType, SimpleFeature> features = exporter.features(featureType);
Assert.assertEquals(2, features.size());
FeatureIterator<SimpleFeature> it = features.features();
SimpleFeature feature = null;
while (it.hasNext()) {
SimpleFeature f = it.next();
if (object.getCode().equals(f.getAttribute(GeoObject.CODE))) {
feature = f;
}
}
Assert.assertNotNull(feature);
Assert.assertEquals("Attributes not equal [code]", object.getCode(), feature.getAttribute(GeoObject.CODE));
Object geometry = feature.getDefaultGeometry();
Assert.assertNotNull(geometry);
ImportAttributeSerializer serializer = new ImportAttributeSerializer(Session.getCurrentLocale(), false, false, LocalizationFacade.getInstalledLocales());
Collection<AttributeType> attributes = serializer.attributes(type.getType());
for (AttributeType attribute : attributes) {
String attributeName = attribute.getName();
Object oValue = object.getValue(attributeName);
Object fValue = feature.getAttribute(exporter.getColumnName(attributeName));
if (attribute instanceof AttributeTermType) {
Assert.assertEquals("Attributes not equal [" + attributeName + "]", GeoObjectUtil.convertToTermString((AttributeTermType) attribute, oValue), fValue);
} else if (attribute instanceof AttributeLocalType) {
Assert.assertEquals("Attributes not equal [" + attributeName + "]", ((LocalizedValue) oValue).getValue(), fValue);
} else {
Assert.assertEquals("Attributes not equal [" + attributeName + "]", oValue, fValue);
}
}
Assert.assertEquals(FastTestDataset.CAMBODIA.getCode(), feature.getAttribute(exporter.getColumnName("fastadmincodefastcountry")));
Assert.assertEquals(FastTestDataset.CAMBODIA.getDisplayLabel(), feature.getAttribute(exporter.getColumnName("fastadmincodefastcountryDefaultLocale")));
}
use of org.commongeoregistry.adapter.metadata.AttributeLocalType in project geoprism-registry by terraframe.
the class ListTypeVersion method removeAttributeType.
public void removeAttributeType(TableMetadata metadata, AttributeType attributeType) {
Collection<Locale> locales = LocalizationFacade.getInstalledLocales();
MdBusinessDAOIF mdBusiness = MdBusinessDAO.get(metadata.getMdBusiness().getOid());
if (!(attributeType instanceof AttributeTermType || attributeType instanceof AttributeClassificationType || attributeType instanceof AttributeLocalType)) {
removeAttribute(mdBusiness, attributeType.getName());
} else if (attributeType instanceof AttributeTermType || attributeType instanceof AttributeClassificationType) {
removeAttribute(mdBusiness, attributeType.getName());
removeAttribute(mdBusiness, attributeType.getName() + DEFAULT_LOCALE);
for (Locale locale : locales) {
removeAttribute(mdBusiness, attributeType.getName() + locale.toString());
}
} else if (attributeType instanceof AttributeLocalType) {
removeAttribute(mdBusiness, attributeType.getName() + DEFAULT_LOCALE);
for (Locale locale : locales) {
removeAttribute(mdBusiness, attributeType.getName() + locale.toString());
}
}
}
use of org.commongeoregistry.adapter.metadata.AttributeLocalType in project geoprism-registry by terraframe.
the class MasterListVersion method removeAttributeType.
public void removeAttributeType(TableMetadata metadata, AttributeType attributeType) {
Collection<Locale> locales = LocalizationFacade.getInstalledLocales();
MdBusinessDAOIF mdBusiness = MdBusinessDAO.get(metadata.getMdBusiness().getOid());
if (!(attributeType instanceof AttributeTermType || attributeType instanceof AttributeClassificationType || attributeType instanceof AttributeLocalType)) {
removeAttribute(mdBusiness, attributeType.getName());
} else if (attributeType instanceof AttributeTermType || attributeType instanceof AttributeClassificationType) {
removeAttribute(mdBusiness, attributeType.getName());
removeAttribute(mdBusiness, attributeType.getName() + DEFAULT_LOCALE);
for (Locale locale : locales) {
removeAttribute(mdBusiness, attributeType.getName() + locale.toString());
}
} else if (attributeType instanceof AttributeLocalType) {
removeAttribute(mdBusiness, attributeType.getName() + DEFAULT_LOCALE);
for (Locale locale : locales) {
removeAttribute(mdBusiness, attributeType.getName() + locale.toString());
}
}
}
use of org.commongeoregistry.adapter.metadata.AttributeLocalType in project geoprism-registry by terraframe.
the class MasterListVersion method createMdAttributeFromAttributeType.
protected static void createMdAttributeFromAttributeType(TableMetadata metadata, AttributeType attributeType, ServerGeoObjectType type, Collection<Locale> locales) {
MdBusiness mdBusiness = metadata.getMdBusiness();
if (!(attributeType instanceof AttributeTermType || attributeType instanceof AttributeClassificationType || attributeType instanceof AttributeLocalType)) {
MdAttributeConcrete mdAttribute = null;
if (attributeType.getType().equals(AttributeCharacterType.TYPE)) {
mdAttribute = new MdAttributeCharacter();
MdAttributeCharacter mdAttributeCharacter = (MdAttributeCharacter) mdAttribute;
mdAttributeCharacter.setDatabaseSize(MdAttributeCharacterInfo.MAX_CHARACTER_SIZE);
} else if (attributeType.getType().equals(AttributeDateType.TYPE)) {
mdAttribute = new MdAttributeDateTime();
} else if (attributeType.getType().equals(AttributeIntegerType.TYPE)) {
mdAttribute = new MdAttributeLong();
} else if (attributeType.getType().equals(AttributeFloatType.TYPE)) {
AttributeFloatType attributeFloatType = (AttributeFloatType) attributeType;
mdAttribute = new MdAttributeDouble();
mdAttribute.setValue(MdAttributeDoubleInfo.LENGTH, Integer.toString(attributeFloatType.getPrecision()));
mdAttribute.setValue(MdAttributeDoubleInfo.DECIMAL, Integer.toString(attributeFloatType.getScale()));
} else if (attributeType.getType().equals(AttributeBooleanType.TYPE)) {
mdAttribute = new MdAttributeBoolean();
} else {
throw new UnsupportedOperationException("Unsupported type [" + attributeType.getType() + "]");
}
mdAttribute.setAttributeName(attributeType.getName());
LocalizedValueConverter.populate(mdAttribute.getDisplayLabel(), attributeType.getLabel());
LocalizedValueConverter.populate(mdAttribute.getDescription(), attributeType.getDescription());
mdAttribute.setDefiningMdClass(mdBusiness);
mdAttribute.apply();
} else if (attributeType instanceof AttributeTermType || attributeType instanceof AttributeClassificationType) {
MdAttributeCharacter cloneAttribute = new MdAttributeCharacter();
cloneAttribute.setValue(MdAttributeConcreteInfo.NAME, attributeType.getName());
cloneAttribute.setValue(MdAttributeCharacterInfo.SIZE, "255");
cloneAttribute.addIndexType(MdAttributeIndices.NON_UNIQUE_INDEX);
LocalizedValueConverter.populate(cloneAttribute.getDisplayLabel(), attributeType.getLabel());
LocalizedValueConverter.populate(cloneAttribute.getDescription(), attributeType.getDescription());
cloneAttribute.setDefiningMdClass(mdBusiness);
cloneAttribute.apply();
metadata.addPair(cloneAttribute, cloneAttribute);
MdAttributeCharacter mdAttributeDefaultLocale = new MdAttributeCharacter();
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.NAME, attributeType.getName() + DEFAULT_LOCALE);
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeDefaultLocale.setDefiningMdClass(mdBusiness);
LocalizedValueConverter.populate(mdAttributeDefaultLocale.getDisplayLabel(), attributeType.getLabel(), " (defaultLocale)");
LocalizedValueConverter.populate(mdAttributeDefaultLocale.getDescription(), attributeType.getDescription(), " (defaultLocale)");
mdAttributeDefaultLocale.apply();
metadata.addPair(mdAttributeDefaultLocale, cloneAttribute);
for (Locale locale : locales) {
MdAttributeCharacter mdAttributeLocale = new MdAttributeCharacter();
mdAttributeLocale.setValue(MdAttributeCharacterInfo.NAME, attributeType.getName() + locale.toString());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeLocale.setDefiningMdClass(mdBusiness);
LocalizedValueConverter.populate(mdAttributeLocale.getDisplayLabel(), attributeType.getLabel(), " (" + locale.toString() + ")");
LocalizedValueConverter.populate(mdAttributeLocale.getDescription(), attributeType.getDescription());
mdAttributeLocale.apply();
metadata.addPair(mdAttributeLocale, cloneAttribute);
}
// MdAttributeUUID mdAttributeOid = new MdAttributeUUID();
// mdAttributeOid.setValue(MdAttributeConcreteInfo.NAME,
// attributeType.getName() + "Oid");
// AbstractBuilder.populate(mdAttributeOid.getDisplayLabel(),
// attributeType.getLabel());
// AbstractBuilder.populate(mdAttributeOid.getDescription(),
// attributeType.getDescription());
// mdAttributeOid.setDefiningMdClass(mdBusiness);
// mdAttributeOid.apply();
} else if (attributeType instanceof AttributeLocalType) {
boolean isDisplayLabel = attributeType.getName().equals(DefaultAttribute.DISPLAY_LABEL.getName());
MdAttributeCharacter mdAttributeDefaultLocale = new MdAttributeCharacter();
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.NAME, attributeType.getName() + DEFAULT_LOCALE);
mdAttributeDefaultLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeDefaultLocale.setDefiningMdClass(mdBusiness);
LocalizedValueConverter.populate(mdAttributeDefaultLocale.getDisplayLabel(), isDisplayLabel ? type.getLabel() : attributeType.getLabel(), " (defaultLocale)");
LocalizedValueConverter.populate(mdAttributeDefaultLocale.getDescription(), attributeType.getDescription(), " (defaultLocale)");
mdAttributeDefaultLocale.apply();
for (Locale locale : locales) {
MdAttributeCharacter mdAttributeLocale = new MdAttributeCharacter();
mdAttributeLocale.setValue(MdAttributeCharacterInfo.NAME, attributeType.getName() + locale.toString());
mdAttributeLocale.setValue(MdAttributeCharacterInfo.SIZE, "255");
mdAttributeLocale.setDefiningMdClass(mdBusiness);
LocalizedValueConverter.populate(mdAttributeLocale.getDisplayLabel(), isDisplayLabel ? type.getLabel() : attributeType.getLabel(), " (" + locale.toString() + ")");
LocalizedValueConverter.populate(mdAttributeLocale.getDescription(), attributeType.getDescription());
mdAttributeLocale.apply();
}
}
}
use of org.commongeoregistry.adapter.metadata.AttributeLocalType in project geoprism-registry by terraframe.
the class DHIS2FeatureService method getDHIS2AttributeConfiguration.
@Request(RequestType.SESSION)
public JsonArray getDHIS2AttributeConfiguration(String sessionId, String dhis2SystemOid, String geoObjectTypeCode) {
DHIS2ExternalSystem system = DHIS2ExternalSystem.get(dhis2SystemOid);
JsonArray response = new JsonArray();
ServerGeoObjectType got = ServerGeoObjectType.get(geoObjectTypeCode);
Map<String, AttributeType> cgrAttrs = got.getAttributeMap();
DHIS2TransportServiceIF dhis2;
try {
dhis2 = DHIS2ServiceFactory.buildDhis2TransportService(system);
} catch (InvalidLoginException e) {
LoginException cgrlogin = new LoginException(e);
throw cgrlogin;
} catch (HTTPException | UnexpectedResponseException | BadServerUriException | IllegalArgumentException e) {
HttpError cgrhttp = new HttpError(e);
throw cgrhttp;
}
final DHIS2OptionCache optionCache = new DHIS2OptionCache(dhis2);
List<Attribute> dhis2Attrs = getDHIS2Attributes(dhis2);
final String[] skipAttrs = new String[] { DefaultAttribute.GEOMETRY.getName(), DefaultAttribute.SEQUENCE.getName(), DefaultAttribute.TYPE.getName() };
for (AttributeType cgrAttr : cgrAttrs.values()) {
if (!ArrayUtils.contains(skipAttrs, cgrAttr.getName())) {
JsonObject joAttr = new JsonObject();
JsonObject joCgrAttr = new JsonObject();
joCgrAttr.addProperty("name", cgrAttr.getName());
joCgrAttr.addProperty("label", cgrAttr.getLabel().getValue());
joCgrAttr.addProperty("type", cgrAttr.getType());
joCgrAttr.addProperty("typeLabel", AttributeTypeMetadata.get().getTypeEnumDisplayLabel(cgrAttr.getType()));
joAttr.add("cgrAttr", joCgrAttr);
JsonArray jaStrategies = new JsonArray();
List<DHIS2AttributeMapping> strategies = this.getMappingStrategies(cgrAttr);
for (DHIS2AttributeMapping strategy : strategies) {
jaStrategies.add(strategy.getClass().getName());
}
joAttr.add("attributeMappingStrategies", jaStrategies);
JsonArray jaDhis2Attrs = new JsonArray();
for (Attribute dhis2Attr : dhis2Attrs) {
if (!dhis2Attr.getOrganisationUnitAttribute()) {
continue;
}
boolean valid = false;
JsonObject jo = new JsonObject();
if (cgrAttr instanceof AttributeBooleanType && dhis2Attr.getOptionSetId() == null && (dhis2Attr.getValueType().equals(ValueType.BOOLEAN) || dhis2Attr.getValueType().equals(ValueType.TRUE_ONLY))) {
valid = true;
} else if (cgrAttr instanceof AttributeIntegerType && dhis2Attr.getOptionSetId() == null && (dhis2Attr.getValueType().equals(ValueType.INTEGER) || dhis2Attr.getValueType().equals(ValueType.INTEGER_POSITIVE) || dhis2Attr.getValueType().equals(ValueType.INTEGER_NEGATIVE) || dhis2Attr.getValueType().equals(ValueType.INTEGER_ZERO_OR_POSITIVE))) {
valid = true;
} else if (cgrAttr instanceof AttributeFloatType && dhis2Attr.getOptionSetId() == null && (dhis2Attr.getValueType().equals(ValueType.NUMBER) || dhis2Attr.getValueType().equals(ValueType.UNIT_INTERVAL) || dhis2Attr.getValueType().equals(ValueType.PERCENTAGE))) {
valid = true;
} else if (cgrAttr instanceof AttributeDateType && dhis2Attr.getOptionSetId() == null && (dhis2Attr.getValueType().equals(ValueType.DATE) || dhis2Attr.getValueType().equals(ValueType.DATETIME) || dhis2Attr.getValueType().equals(ValueType.TIME) || dhis2Attr.getValueType().equals(ValueType.AGE))) {
valid = true;
} else if (cgrAttr instanceof AttributeTermType && dhis2Attr.getOptionSetId() != null) {
valid = true;
JsonArray jaDhis2Options = new JsonArray();
IntegratedOptionSet set = optionCache.getOptionSet(dhis2Attr.getOptionSetId());
SortedSet<Option> options = set.getOptions();
for (Option option : options) {
JsonObject joDhis2Option = new JsonObject();
joDhis2Option.addProperty("code", option.getCode());
joDhis2Option.addProperty("name", option.getName());
joDhis2Option.addProperty("id", option.getName());
jaDhis2Options.add(joDhis2Option);
}
jo.add("options", jaDhis2Options);
} else if ((cgrAttr instanceof AttributeCharacterType || cgrAttr instanceof AttributeLocalType) && dhis2Attr.getOptionSetId() == null && (dhis2Attr.getValueType().equals(ValueType.TEXT) || dhis2Attr.getValueType().equals(ValueType.LONG_TEXT) || dhis2Attr.getValueType().equals(ValueType.LETTER) || dhis2Attr.getValueType().equals(ValueType.PHONE_NUMBER) || dhis2Attr.getValueType().equals(ValueType.EMAIL) || dhis2Attr.getValueType().equals(ValueType.USERNAME) || dhis2Attr.getValueType().equals(ValueType.URL))) {
valid = true;
}
if (valid) {
jo.addProperty("dhis2Id", dhis2Attr.getId());
jo.addProperty("code", dhis2Attr.getCode());
jo.addProperty("name", dhis2Attr.getName());
jaDhis2Attrs.add(jo);
}
}
joAttr.add("dhis2Attrs", jaDhis2Attrs);
if (cgrAttr instanceof AttributeTermType) {
JsonArray terms = new JsonArray();
List<Term> children = ((AttributeTermType) cgrAttr).getTerms();
for (Term child : children) {
JsonObject joTerm = new JsonObject();
joTerm.addProperty("label", child.getLabel().getValue());
joTerm.addProperty("code", child.getCode());
terms.add(joTerm);
}
joAttr.add("terms", terms);
}
response.add(joAttr);
}
}
return response;
}
Aggregations