use of net.opengis.sensorML.x101.ContactDocument.Contact in project arctic-sea by 52North.
the class SensorMLEncoderv101 method mergeContacts.
@SuppressWarnings("unused")
private Contact[] mergeContacts(final Contact[] contacts, final ContactList additionalContactsList) {
final Set<Person> mergedPersons = Sets.newHashSet();
final Set<ResponsibleParty> mergedResponsibleParties = Sets.newHashSet();
for (final Contact contact : contacts) {
if (isContactListSetAndContainingElements(contact)) {
for (final net.opengis.sensorML.x101.ContactListDocument.ContactList.Member member : contact.getContactList().getMemberArray()) {
if (member.isSetPerson()) {
mergedPersons.add(member.getPerson());
} else if (member.isSetResponsibleParty()) {
mergedResponsibleParties.add(member.getResponsibleParty());
}
}
} else if (contact.isSetPerson()) {
mergedPersons.add(contact.getPerson());
} else if (contact.isSetResponsibleParty()) {
mergedResponsibleParties.add(contact.getResponsibleParty());
}
}
for (final net.opengis.sensorML.x101.ContactListDocument.ContactList.Member member : additionalContactsList.getMemberArray()) {
if (member.isSetPerson() && !isContained(member.getPerson(), mergedPersons)) {
mergedPersons.add(member.getPerson());
} else if (member.isSetResponsibleParty() && !isContained(member.getResponsibleParty(), mergedResponsibleParties)) {
mergedResponsibleParties.add(member.getResponsibleParty());
}
}
final Contact newContact = Contact.Factory.newInstance();
final ContactList newContactList = ContactList.Factory.newInstance();
mergedResponsibleParties.forEach(responsibleParty -> newContactList.addNewMember().addNewResponsibleParty().set(responsibleParty));
mergedPersons.forEach(person -> newContactList.addNewMember().addNewPerson().set(person));
if (newContactList.sizeOfMemberArray() == 1) {
if (newContactList.getMemberArray(0).isSetPerson()) {
newContact.addNewPerson().set(newContactList.getMemberArray(0).getPerson());
} else if (newContactList.getMemberArray(0).isSetResponsibleParty()) {
newContact.addNewResponsibleParty().set(newContactList.getMemberArray(0).getResponsibleParty());
}
} else {
newContact.addNewContactList().set(newContactList);
}
final Contact[] result = { newContact };
return result;
}
use of net.opengis.sensorML.x101.ContactDocument.Contact in project arctic-sea by 52North.
the class SensorMLEncoderV101Test method should_merge_and_encode_multiple_contacts.
@Test
public void should_merge_and_encode_multiple_contacts() throws EncodingException {
final SensorML sensorML = new SensorML();
final System system = new System();
sensorML.addMember(system);
final SmlPerson p1 = createPerson("1");
final SmlResponsibleParty rp1 = createResponsibleParty("1");
system.addContact(p1);
system.addContact(rp1);
final SensorMLDocument xbSensorML = SensorMLDocument.Factory.newInstance();
final SystemType xbSystem = SystemType.Factory.newInstance();
final ContactList xbContactList = xbSystem.addNewContact().addNewContactList();
final Person xbP1 = xbContactList.addNewMember().addNewPerson();
setPersonValues(p1, xbP1);
final ResponsibleParty xbRP1 = xbContactList.addNewMember().addNewResponsibleParty();
setResponsiblePartyValues(rp1, xbRP1);
final XmlObject xbProcess = xbSensorML.addNewSensorML().addNewMember().addNewProcess().set(xbSystem);
XmlHelper.substituteElement(xbProcess, xbSystem);
xbSensorML.getSensorML().setVersion("1.0.1");
sensorML.setXml(xbSensorML.xmlText());
final SystemType xbEncodedSystem = encodeSystem(sensorML);
assertThat(xbEncodedSystem.sizeOfContactArray(), is(1));
assertThat(xbEncodedSystem.getContactArray(0).isSetContactList(), is(true));
assertThat(xbEncodedSystem.getContactArray(0).getContactList().sizeOfMemberArray(), is(2));
boolean personChecked = false, responsiblePartyChecked = false;
for (final Member member : xbEncodedSystem.getContactArray(0).getContactList().getMemberArray()) {
if (member.isSetPerson()) {
checkPerson(p1, member.getPerson());
personChecked = true;
} else if (member.isSetResponsibleParty()) {
checkResponsibleParty(rp1, member.getResponsibleParty());
responsiblePartyChecked = true;
}
}
if (!personChecked) {
fail("sml:Person not found in contact/contactList");
}
if (!responsiblePartyChecked) {
fail("sml:ResponsibleParty not found in contact/ContactList");
}
}
use of net.opengis.sensorML.x101.ContactDocument.Contact in project arctic-sea by 52North.
the class SensorMLEncoderV101Test method should_encode_single_contact_person.
// @Test
// public void should_encode_features_of_interest() throws EncodingException {
// final SensorML sensorMl = new SensorML();
// final System system = new System();
// sensorMl.addMember(system);
// system.addFeatureOfInterest(TEST_ID_1);
// system.addFeatureOfInterest(TEST_ID_2);
// final SimpleDataRecordType xbSimpleDataRecord =
// encodeSimpleDataRecord(sensorMl, SensorMLConstants.ELEMENT_NAME_FEATURES_OF_INTEREST, 2);
// validateField(xbSimpleDataRecord.getFieldArray()[0], SensorMLConstants.FEATURE_OF_INTEREST_FIELD_NAME + 1,
// SensorMLConstants.FEATURE_OF_INTEREST_FIELD_DEFINITION, TEST_ID_1);
// validateField(xbSimpleDataRecord.getFieldArray()[1], SensorMLConstants.FEATURE_OF_INTEREST_FIELD_NAME + 2,
// SensorMLConstants.FEATURE_OF_INTEREST_FIELD_DEFINITION, TEST_ID_2);
// }
//
// @Test
// public void should_encode_offerings() throws EncodingException {
// final SensorML sensorMl = new SensorML();
// final System system = new System();
// sensorMl.addMember(system);
// system.addOffering(new SosOffering(TEST_ID_1, TEST_NAME_1));
// system.addOffering(new SosOffering(TEST_ID_2, TEST_NAME_2));
// final SimpleDataRecordType xbSimpleDataRecord =
// encodeSimpleDataRecord(sensorMl, SensorMLConstants.ELEMENT_NAME_OFFERINGS, 2);
// validateField(xbSimpleDataRecord.getFieldArray()[0], TEST_NAME_1, SensorMLConstants.OFFERING_FIELD_DEFINITION,
// TEST_ID_1);
// validateField(xbSimpleDataRecord.getFieldArray()[1], TEST_NAME_2, SensorMLConstants.OFFERING_FIELD_DEFINITION,
// TEST_ID_2);
// }
//
// @Test
// public void should_encode_parent_procedures() throws EncodingException {
// final SensorML sensorMl = new SensorML();
// final System system = new System();
// sensorMl.addMember(system);
// system.addParentProcedure(TEST_ID_1);
// system.addParentProcedure(TEST_ID_2);
// final SimpleDataRecordType xbSimpleDataRecord =
// encodeSimpleDataRecord(sensorMl, SensorMLConstants.ELEMENT_NAME_PARENT_PROCEDURES, 2);
// validateField(xbSimpleDataRecord.getFieldArray()[0], SensorMLConstants.PARENT_PROCEDURE_FIELD_NAME + 1,
// SensorMLConstants.PARENT_PROCEDURE_FIELD_DEFINITION, TEST_ID_1);
// validateField(xbSimpleDataRecord.getFieldArray()[1], SensorMLConstants.PARENT_PROCEDURE_FIELD_NAME + 2,
// SensorMLConstants.PARENT_PROCEDURE_FIELD_DEFINITION, TEST_ID_2);
// }
//
// @Test
// public void should_encode_child_procedures() throws EncodingException {
// final SensorML sensorMl = new SensorML();
// final System system = new System();
// sensorMl.addMember(system);
// final System childProcedure = new System();
// childProcedure.setIdentifier(TEST_CHILD_1);
// system.addChildProcedure(childProcedure);
// childProcedure.addFeatureOfInterest(TEST_ID_1);
// final SystemType xbSystemType = encodeSystem(sensorMl);
// assertThat(xbSystemType.getComponents().getComponentList().sizeOfComponentArray(), is(1));
// final Component xbComponent = xbSystemType.getComponents().getComponentList().getComponentArray(0);
// assertThat(xbComponent.getProcess(), instanceOf(SystemType.class));
// final SystemType xbComponentSystem = (SystemType) xbComponent.getProcess();
// final SimpleDataRecordType xbSimpleDataRecord =
// encodeSimpleDataRecord(xbComponentSystem, SensorMLConstants.ELEMENT_NAME_FEATURES_OF_INTEREST, 1);
// validateField(xbSimpleDataRecord.getFieldArray(0), SensorMLConstants.FEATURE_OF_INTEREST_FIELD_NAME,
// SensorMLConstants.FEATURE_OF_INTEREST_FIELD_DEFINITION, TEST_ID_1);
// }
//
// @Test
// @SuppressWarnings("unchecked")
// public void should_aggregate_child_outputs() throws EncodingException {
// final SweQuantity q1 = new SweQuantity();
// q1.setDefinition("def1");
// q1.setUom("uom1");
// final SmlIo<?> output1 = new SmlIo<SweQuantity>(q1);
//
// final SweQuantity q2 = new SweQuantity();
// q2.setDefinition("def2");
// q2.setUom("uom2");
// final SmlIo<?> output2 = new SmlIo<SweQuantity>(q2);
//
// final SweQuantity q3 = new SweQuantity();
// q3.setDefinition("def3");
// q3.setUom("uom3");
// final SmlIo<?> output3 = new SmlIo<SweQuantity>(q3);
//
// final SensorML sensorMl = new SensorML();
// sensorMl.setIdentifier("sensorMl");
// final System system = new System();
// system.setIdentifier("system");
// sensorMl.addMember(system);
// system.getOutputs().add(output1);
//
// final SensorML childSml = new SensorML();
// childSml.setIdentifier("childSml");
// final System childSystem = new System();
// childSystem.setIdentifier("childSystem");
// childSml.addMember(childSystem);
// system.addChildProcedure(childSml);
// childSystem.getOutputs().add(output2);
//
// final SensorML grandchildSml = new SensorML();
// grandchildSml.setIdentifier("grandchildSml");
// final System grandchildSystem = new System();
// grandchildSystem.setIdentifier("grandchildSystem");
// grandchildSml.addMember(grandchildSystem);
// childSystem.addChildProcedure(grandchildSml);
// grandchildSystem.getOutputs().add(output3);
//
// encodeSystem(sensorMl);
//
// assertThat(system.getOutputs(), hasItems(output1, output2, output3));
// assertThat(childSystem.getOutputs(), hasItems(output2, output3));
// assertThat(grandchildSystem.getOutputs(), hasItem(output3));
// }
@Test
public void should_encode_single_contact_person() throws EncodingException {
final SensorML sensorML = new SensorML();
final System system = new System();
sensorML.addMember(system);
final SmlPerson contact = createPerson("");
system.addContact(contact);
final SystemType xbSystem = encodeSystem(sensorML);
assertThat(xbSystem.sizeOfContactArray(), is(1));
assertThat(xbSystem.getContactArray(0).getContactList().getMemberArray(0).isSetPerson(), is(true));
checkPerson(contact, xbSystem.getContactArray(0).getContactList().getMemberArray(0).getPerson());
}
use of net.opengis.sensorML.x101.ContactDocument.Contact in project arctic-sea by 52North.
the class SensorMLDecoderV101Test method should_decode_contact_from_sml.
@Test
public void should_decode_contact_from_sml() throws DecodingException {
String role1 = "role1";
String role2 = "role2";
String orgName = "orgName";
String individualName = "individualName";
String posName = "posName";
String contactInstructions = "contactInstructions";
String hoursOfService = "hoursOfService";
String adminArea = "adminArea";
String city = "city";
String country = "country";
String email = "email";
String postalCode = "postalCode";
String deliveryPoint1 = "deliveryPoint1";
String deliveryPoint2 = "deliveryPoint2";
String onlineResource1 = "onlineResource1";
String onlineResource2 = "onlineResource2";
String phoneVoice1 = "phoneVoice1";
String phoneVoice2 = "phoneVoice2";
String phoneFax1 = "phoneFax1";
String phoneFax2 = "phoneFax2";
String affiliation = "affiliation";
String name = "name";
String phoneNumber = "phoneNumber";
String surname = "surname";
String userID = "userID";
SensorMLDocument xbSmlDoc = getSensorMLDoc();
SystemType xbSystem = (SystemType) xbSmlDoc.getSensorML().addNewMember().addNewProcess().substitute(SensorMLConstants.SYSTEM_QNAME, SystemType.type);
Contact xbContact = xbSystem.addNewContact();
ContactList xbContactList = xbContact.addNewContactList();
// responsible party
ContactList.Member xbMember1 = xbContactList.addNewMember();
xbMember1.setRole(role1);
ResponsibleParty xbRespPart = xbMember1.addNewResponsibleParty();
xbRespPart.setOrganizationName(orgName);
xbRespPart.setIndividualName(individualName);
xbRespPart.setPositionName(posName);
ContactInfo xbContactInfo = xbRespPart.addNewContactInfo();
xbContactInfo.setContactInstructions(contactInstructions);
xbContactInfo.setHoursOfService(hoursOfService);
ContactInfo.Address xbAddress = xbContactInfo.addNewAddress();
xbAddress.setAdministrativeArea(adminArea);
xbAddress.setCity(city);
xbAddress.setCountry(country);
xbAddress.setElectronicMailAddress(email);
xbAddress.setPostalCode(postalCode);
xbAddress.addDeliveryPoint(deliveryPoint1);
xbAddress.addDeliveryPoint(deliveryPoint2);
xbContactInfo.addNewOnlineResource().setHref(onlineResource1);
xbContactInfo.addNewOnlineResource().setHref(onlineResource2);
ContactInfo.Phone phone = xbContactInfo.addNewPhone();
phone.addVoice(phoneVoice1);
phone.addVoice(phoneVoice2);
phone.addFacsimile(phoneFax1);
phone.addFacsimile(phoneFax2);
// person
ContactList.Member xbMember2 = xbContactList.addNewMember();
xbMember2.setRole(role2);
Person xbPerson = xbMember2.addNewPerson();
xbPerson.setAffiliation(affiliation);
xbPerson.setEmail(email);
xbPerson.setName(name);
xbPerson.setPhoneNumber(phoneNumber);
xbPerson.setSurname(surname);
xbPerson.setUserID(userID);
AbstractProcess absProcess = decodeAbstractProcess(xbSmlDoc);
assertThat(absProcess.getContact(), notNullValue());
assertThat(absProcess.getContact().size(), is(1));
assertThat(absProcess.getContact().get(0), instanceOf(SmlContactList.class));
SmlContactList smlContactList = (SmlContactList) absProcess.getContact().get(0);
assertThat(smlContactList.getMembers(), notNullValue());
assertThat(smlContactList.getMembers().size(), is(2));
assertThat(smlContactList.getMembers().get(0).getRole(), is(role1));
assertThat(smlContactList.getMembers().get(0), instanceOf(SmlResponsibleParty.class));
SmlResponsibleParty smlRespParty = (SmlResponsibleParty) smlContactList.getMembers().get(0);
assertThat(smlRespParty.getAdministrativeArea(), is(adminArea));
assertThat(smlRespParty.getCity(), is(city));
assertThat(smlRespParty.getContactInstructions(), is(contactInstructions));
assertThat(smlRespParty.getCountry(), is(country));
assertThat(smlRespParty.getDeliveryPoint().size(), is(2));
assertThat(smlRespParty.getDeliveryPoint().get(0), is(deliveryPoint1));
assertThat(smlRespParty.getDeliveryPoint().get(1), is(deliveryPoint2));
assertThat(smlRespParty.getEmail(), is(email));
assertThat(smlRespParty.getHoursOfService(), is(hoursOfService));
assertThat(smlRespParty.getIndividualName(), is(individualName));
assertThat(smlRespParty.getOnlineResources().size(), is(2));
assertThat(smlRespParty.getOnlineResources().get(0), is(onlineResource1));
assertThat(smlRespParty.getOnlineResources().get(1), is(onlineResource2));
assertThat(smlRespParty.getOrganizationName(), is(orgName));
assertThat(smlRespParty.getPhoneFax().size(), is(2));
assertThat(smlRespParty.getPhoneFax().get(0), is(phoneFax1));
assertThat(smlRespParty.getPhoneFax().get(1), is(phoneFax2));
assertThat(smlRespParty.getPhoneVoice().size(), is(2));
assertThat(smlRespParty.getPhoneVoice().get(0), is(phoneVoice1));
assertThat(smlRespParty.getPhoneVoice().get(1), is(phoneVoice2));
assertThat(smlRespParty.getPositionName(), is(posName));
assertThat(smlRespParty.getPostalCode(), is(postalCode));
assertThat(smlContactList.getMembers().get(1).getRole(), is(role2));
assertThat(smlContactList.getMembers().get(1), instanceOf(SmlPerson.class));
SmlPerson smlPerson = (SmlPerson) smlContactList.getMembers().get(1);
assertThat(smlPerson.getAffiliation(), is(affiliation));
assertThat(smlPerson.getEmail(), is(email));
assertThat(smlPerson.getName(), is(name));
assertThat(smlPerson.getPhoneNumber(), is(phoneNumber));
assertThat(smlPerson.getSurname(), is(surname));
assertThat(smlPerson.getUserID(), is(userID));
}
Aggregations