use of org.n52.shetland.ogc.sensorML.SmlContact in project arctic-sea by 52North.
the class SensorMLEncoderv101 method createContactList.
private ContactList createContactList(final List<SmlContact> contacts) {
final ContactList xbContacts = ContactList.Factory.newInstance();
contacts.forEach(smlContact -> {
if (smlContact.isSetHref()) {
ContactList.Member member = xbContacts.addNewMember();
member.setHref(smlContact.getHref());
if (smlContact.isSetTitle()) {
member.setTitle(smlContact.getTitle());
}
if (smlContact.isSetRole()) {
member.setRole(smlContact.getRole());
}
} else if (smlContact instanceof SmlPerson) {
ContactList.Member member = xbContacts.addNewMember();
member.addNewPerson().set(createPerson((SmlPerson) smlContact));
if (smlContact.isSetRole()) {
member.setRole(smlContact.getRole());
}
} else if (smlContact instanceof SmlResponsibleParty) {
ContactList.Member member = xbContacts.addNewMember();
member.addNewResponsibleParty().set(createResponsibleParty((SmlResponsibleParty) smlContact));
if (smlContact.isSetRole()) {
member.setRole(smlContact.getRole());
}
} else if (smlContact instanceof SmlContactList) {
SmlContactList contactList = (SmlContactList) smlContact;
ContactList innerContactList = createContactList(contactList.getMembers());
int innerContactLength = innerContactList.getMemberArray().length;
for (int i = 0; i < innerContactLength; i++) {
xbContacts.addNewMember().set(innerContactList.getMemberArray(i));
}
}
});
return xbContacts;
}
use of org.n52.shetland.ogc.sensorML.SmlContact in project arctic-sea by 52North.
the class SensorMLDecoderV101 method parseContactListMembers.
private SmlContact parseContactListMembers(final ContactList contactList) {
SmlContactList smlContactList = new SmlContactList();
if (contactList.getMemberArray() != null && contactList.getMemberArray().length > 0) {
for (ContactList.Member member : contactList.getMemberArray()) {
SmlContact thisSmlContact = null;
if (member.getPerson() != null) {
thisSmlContact = parsePerson(member.getPerson());
} else if (member.getResponsibleParty() != null) {
thisSmlContact = parseResponsibleParty(member.getResponsibleParty());
} else if (member.isSetHref()) {
thisSmlContact = new SmlReferencedContact();
thisSmlContact.setHref(member.getHref());
if (member.isSetTitle()) {
thisSmlContact.setTitle(member.getTitle());
}
}
if (thisSmlContact != null) {
if (member.getRole() != null) {
thisSmlContact.setRole(member.getRole());
}
smlContactList.addMember(thisSmlContact);
}
}
}
return smlContactList;
}
use of org.n52.shetland.ogc.sensorML.SmlContact in project arctic-sea by 52North.
the class SensorMLEncoderv20 method addDescribedObjectValues.
private void addDescribedObjectValues(DescribedObjectType dot, DescribedObject describedObject) throws EncodingException {
if (!describedObject.isSetGmlID()) {
describedObject.setGmlId("do_" + JavaHelper.generateID(describedObject.toString()));
}
if (dot.getId() == null || dot.getId().isEmpty()) {
dot.setId(describedObject.getGmlId());
}
// update/set gml:identifier
if (describedObject.isSetIdentifier()) {
describedObject.getIdentifierCodeWithAuthority().setCodeSpace(OGCConstants.UNIQUE_ID);
XmlObject encodeObjectToXml = encodeObjectToXmlGml32(describedObject.getIdentifierCodeWithAuthority());
if (encodeObjectToXml != null) {
if (dot.isSetIdentifier()) {
dot.getIdentifier().set(encodeObjectToXml);
} else {
dot.addNewIdentifier().set(encodeObjectToXml);
}
}
}
// set capabilities
if (describedObject.isSetCapabilities()) {
final Capabilities[] existing = dot.getCapabilitiesArray();
final Set<String> names = Sets.newHashSetWithExpectedSize(existing.length);
for (final Capabilities element : existing) {
if (element.getName() != null) {
names.add(element.getName());
}
}
for (final SmlCapabilities sosCapability : describedObject.getCapabilities()) {
// Update Discovery Profile
if (!SensorMLConstants.ELEMENT_NAME_OBSERVED_BBOX.equals(sosCapability.getName())) {
final Capabilities c = createCapability(sosCapability);
// replace existing capability with the same name
if (c != null) {
if (names.contains(c.getName())) {
removeCapability(dot, c);
}
dot.addNewCapabilities().set(c);
}
}
}
}
// set description
if (describedObject.isSetDescription() && !dot.isSetDescription()) {
dot.addNewDescription().setStringValue(describedObject.getDescription());
}
// set names
if (describedObject.isSetName() && CollectionHelper.isNullOrEmpty(dot.getNameArray())) {
// TODO check if override existing names
addNamesToAbstractProcess(dot, describedObject.getNames());
}
// set keywords
if (describedObject.isSetKeywords()) {
if (CollectionHelper.isNullOrEmpty(dot.getKeywordsArray())) {
final List<String> keywords = describedObject.getKeywords();
// final int length = dot.getKeywordsArray().length;
// for (int i = 0; i < length; ++i) {
// dot.removeKeywords(i);
// }
dot.addNewKeywords().addNewKeywordList().setKeywordArray(keywords.toArray(new String[keywords.size()]));
// TODO else
}
}
// set identification
if (describedObject.isSetIdentifications()) {
// TODO check for merging identifications if exists
dot.setIdentificationArray(createIdentification(describedObject.getIdentifications()));
}
// set classification
if (describedObject.isSetClassifications()) {
dot.setClassificationArray(createClassification(describedObject.getClassifications()));
}
// set validTime
if (describedObject.isSetValidTime() && CollectionHelper.isNullOrEmpty(dot.getValidTimeArray())) {
for (Time time : describedObject.getValidTime()) {
final XmlObject xbtime = encodeObjectToXmlGml32(time);
if (time instanceof TimeInstant) {
dot.addNewValidTime().addNewTimeInstant().set(xbtime);
} else if (time instanceof TimePeriod) {
dot.addNewValidTime().addNewTimePeriod().set(xbtime);
}
}
// } else {
// TODO remove or
// remove existing validTime element
// final XmlCursor newCursor = dot.getValidTime().newCursor();
// newCursor.removeXml();
// newCursor.dispose();
}
// set characteristics
if (describedObject.isSetCharacteristics()) {
dot.setCharacteristicsArray(createCharacteristics(describedObject.getCharacteristics()));
}
// CollectionHelper.isNotNullOrEmpty(dot.getContactsArray())) {
if (describedObject.isSetContact()) {
if (CollectionHelper.isNullOrEmpty(dot.getContactsArray())) {
ContactListType cl = ContactListType.Factory.newInstance();
for (SmlContact contact : describedObject.getContact()) {
if (contact instanceof SmlResponsibleParty) {
if (contact.isSetHref()) {
XmlObject xml = encodeObjectToXml(GmdConstants.NS_GMD, (SmlResponsibleParty) contact, EncodingContext.of(XmlBeansEncodingFlags.PROPERTY_TYPE));
cl.addNewContact().set(xml);
} else {
XmlObject encodeObjectToXml = encodeObjectToXml(GmdConstants.NS_GMD, contact);
if (encodeObjectToXml != null) {
cl.addNewContact().addNewCIResponsibleParty().set(encodeObjectToXml);
}
}
}
}
if (CollectionHelper.isNotNullOrEmpty(cl.getContactArray())) {
dot.addNewContacts().setContactList(cl);
}
}
}
// set documentation
if (describedObject.isSetDocumentation()) {
if (CollectionHelper.isNullOrEmpty(dot.getDocumentationArray())) {
dot.setDocumentationArray(createDocumentationArray(describedObject.getDocumentation()));
}
}
// set history
}
Aggregations