Skip to content

Commit

Permalink
New version of person part
Browse files Browse the repository at this point in the history
  • Loading branch information
Anders Hessellund Jensen committed Jun 14, 2011
1 parent f32bee2 commit 08d441e
Show file tree
Hide file tree
Showing 191 changed files with 8,803 additions and 1,849 deletions.
Expand Up @@ -8,11 +8,10 @@

import javax.xml.datatype.XMLGregorianCalendar;

import oio.sagdok._2_0.PersonFlerRelationType;
import oio.sagdok._2_0.TidspunktType;
import oio.sagdok._2_0.TilstandVirkningType;
import oio.sagdok._2_0.UnikIdType;
import oio.sagdok._2_0.VirkningType;
import oio.sagdok._3_0.PersonFlerRelationType;
import oio.sagdok._3_0.TidspunktType;
import oio.sagdok._3_0.UnikIdType;
import oio.sagdok._3_0.VirkningType;
import oio.sagdok.person._1_0.AdresseType;
import oio.sagdok.person._1_0.AttributListeType;
import oio.sagdok.person._1_0.CivilStatusKodeType;
Expand Down Expand Up @@ -60,7 +59,7 @@ public class PersonPartConverter {

public PersonType convert(CurrentPersonData person) {
PersonType result = new PersonType();
result.setUUID(cprToUuid(person.getCprNumber()).toString());
result.setUUIDIdentifikator(cprToUuid(person.getCprNumber()).toString());
result.getRegistrering().add(createRegistreringType(person));
return result;
}
Expand Down Expand Up @@ -117,8 +116,8 @@ else if ("K".equals(koen)) {

private TilstandListeType createTilstandListe(CurrentPersonData person) {
TilstandListeType result = new TilstandListeType();
result.setCivilStatus(createCivilStatusType(person));
result.setLivStatus(createLivStatusType(person));
result.getCivilStatus().add(createCivilStatusType(person));
result.getLivStatus().add(createLivStatusType(person));
return result;
}

Expand All @@ -137,14 +136,14 @@ private RelationListeType createRelationListeType(CurrentPersonData person) {
addPartnerRelation(result, person);
addForaeldremyndighedsIndehavere(result, person);
addforaeldremyndighedBoern(result, person);
addErstatningAf(result, person);
addErstattetAf(result, person);
return result;
}

private void addErstatningAf(RelationListeType result,
private void addErstattetAf(RelationListeType result,
CurrentPersonData person) {
if(person.getGaeldendeCpr() != null && !person.getGaeldendeCpr().trim().isEmpty()) {
result.getErstatningAf().add(createPersonRelationTypeForCpr(person.getGaeldendeCpr(), null, null));
result.getErstatttetAf().add(createPersonRelationTypeForCpr(person.getGaeldendeCpr(), null, null));
}
}

Expand Down Expand Up @@ -174,7 +173,7 @@ private void addForaeldremyndighedsIndehavere(RelationListeType result,
logger.error("There was a ForaeldremyndighedsRelation with type 0003 (mother), but the MorOgFaroplysninger record had no foraeldercpr, cpr={}", person.getCprNumber());
continue;
}
result.getForaeldremyndighedsindehaver().add(createPersonRelationTypeForCpr(person.getMorOplysninger().foraeldercpr, null, null));
result.getForaeldremyndighedsindehaver().add(createPersonFlerRelationTypeForCpr(person.getMorOplysninger().foraeldercpr));
}
else if(relation.typeKode.equals("0004")) {
// far
Expand All @@ -186,15 +185,15 @@ else if(relation.typeKode.equals("0004")) {
logger.error("There was a ForaeldremyndighedsRelation with type 0004 (father), but the MorOgFaroplysninger record had no foraeldercpr, cpr={}", person.getCprNumber());
continue;
}
result.getForaeldremyndighedsindehaver().add(createPersonRelationTypeForCpr(person.getFarOplysninger().foraeldercpr, null, null));
result.getForaeldremyndighedsindehaver().add(createPersonFlerRelationTypeForCpr(person.getFarOplysninger().foraeldercpr));
}
else if(relation.typeKode.equals("0005") || relation.typeKode.equals("0006")) {
// andre foraeldremyndighedsindehavere
if(relation.relationCpr == null) {
logger.error("ForaeldremyndighedsRelation had type {} but did not have relationCpr, cpr={}", relation.typeKode, person.getCprNumber());
continue;
}
result.getForaeldremyndighedsindehaver().add(createPersonRelationTypeForCpr(relation.relationCpr, null, null));
result.getForaeldremyndighedsindehaver().add(createPersonFlerRelationTypeForCpr(relation.relationCpr));
}
else {
logger.error("Ukendt foraeldremyndigheds-typekode {}, cpr={}", relation.typeKode, person.getCprNumber());
Expand Down Expand Up @@ -265,29 +264,23 @@ private PersonRelationType createPersonRelationTypeForVaerge(UmyndiggoerelseVaer
PersonRelationType result = new PersonRelationType();
result.setReferenceID(createUnikIdType(URN_NAMESPACE_CPR, vaerge.relationCpr));
result.setVirkning(createVirkningType(vaerge.getValidFrom(), vaerge.getValidTo()));
result.setCommentText(joinLines(vaerge.RelationsTekst1, vaerge.RelationsTekst2, vaerge.RelationsTekst3, vaerge.RelationsTekst4, vaerge.RelationsTekst5));
// commentText in person part or not?
//result.setCommentText(joinLines(vaerge.RelationsTekst1, vaerge.RelationsTekst2, vaerge.RelationsTekst3, vaerge.RelationsTekst4, vaerge.RelationsTekst5));
return result;
}

private PersonFlerRelationType createPersonFlerRelationTypeForVaergemaal(UmyndiggoerelseVaergeRelation vaergemaal) {
PersonFlerRelationType result = new PersonFlerRelationType();
result.setReferenceID(createUnikIdType(URN_NAMESPACE_CPR, vaergemaal.getCpr()));
result.setVirkning(createVirkningType(vaergemaal.getValidFrom(), vaergemaal.getValidTo()));
result.setCommentText(joinLines(vaergemaal.RelationsTekst1, vaergemaal.RelationsTekst2, vaergemaal.RelationsTekst3, vaergemaal.RelationsTekst4, vaergemaal.RelationsTekst5));
// commentText in person part or not?
//result.setCommentText(joinLines(vaergemaal.RelationsTekst1, vaergemaal.RelationsTekst2, vaergemaal.RelationsTekst3, vaergemaal.RelationsTekst4, vaergemaal.RelationsTekst5));
return result;
}

private String joinLines(String... lines) {
return StringUtils.join(lines, "\n");
}

private TilstandVirkningType createTilstandVirkningType(Date from) {
TilstandVirkningType result = new TilstandVirkningType();
result.setFraTidspunkt(createTidspunktType(from));
result.setAktoerRef(createAktoerRefId());
return result;

}

private VirkningType createVirkningType(Date from, Date to) {
VirkningType result = new VirkningType();
Expand Down
Expand Up @@ -13,8 +13,8 @@
import java.util.Date;
import java.util.List;

import oio.sagdok._2_0.PersonFlerRelationType;
import oio.sagdok._2_0.TidspunktType;
import oio.sagdok._3_0.PersonFlerRelationType;
import oio.sagdok._3_0.TidspunktType;
import oio.sagdok.person._1_0.AdresseType;
import oio.sagdok.person._1_0.CivilStatusKodeType;
import oio.sagdok.person._1_0.CprBorgerType;
Expand Down Expand Up @@ -71,7 +71,7 @@ public void fillsOutCprBorgerForPlainValidCprNumber() {
CurrentPersonData currentPerson = new CurrentPersonData(person, folkekirkeoplysninger, null, null, null, null, null, null, null, null, null, null, null, null);

PersonType personType = converter.convert(currentPerson);
assertNotNull(personType.getUUID());
assertNotNull(personType.getUUIDIdentifikator());

CprBorgerType cprBorger = personType.getRegistrering().get(0).getAttributListe().getRegisterOplysning().get(0).getCprBorger();
assertEquals("1020304050", cprBorger.getPersonCivilRegistrationIdentifier());
Expand Down Expand Up @@ -268,7 +268,7 @@ public void fillsOutLivsStatus() {
}

private LivStatusKodeType getLivStatus(PersonType personType) {
return personType.getRegistrering().get(0).getTilstandListe().getLivStatus().getLivStatusKode();
return personType.getRegistrering().get(0).getTilstandListe().getLivStatus().get(0).getLivStatusKode();
}

@Test
Expand Down Expand Up @@ -304,7 +304,7 @@ public void fillsOutForaeldremyndighedsindehaver() {
foraeldremyndighedsindehavere.add(createForaeldremyndighedsRelation("1020304050", "12345678", "0003"));
CurrentPersonData cp = new CurrentPersonData(createValidPerson(), null, null, null, null, null, null, null, null, morOplysninger, farOplysninger, foraeldremyndighedsindehavere, null, null);
PersonType personType = converter.convert(cp);
List<PersonRelationType> foraeldremyndighedsindehaverResult = personType.getRegistrering().get(0).getRelationListe().getForaeldremyndighedsindehaver();
List<PersonFlerRelationType> foraeldremyndighedsindehaverResult = personType.getRegistrering().get(0).getRelationListe().getForaeldremyndighedsindehaver();
assertEquals(1, foraeldremyndighedsindehaverResult.size());
assertEquals("URN:CPR:12345678", foraeldremyndighedsindehaverResult.get(0).getReferenceID().getURNIdentifikator());
}
Expand Down Expand Up @@ -352,7 +352,6 @@ public void fillsOutRetligHandleevneVaergeForPerson() {
assertTidspunktTypeEquals(at(2005, Calendar.JANUARY, 25), personRelationType.getVirkning().getFraTidspunkt());
assertTidspunktTypeEquals(at(2020, Calendar.MARCH, 17), personRelationType.getVirkning().getTilTidspunkt());
assertNotNull(personRelationType.getVirkning().getAktoerRef()); // Field is required
assertEquals("Linje 1\n\n\nLinje 4\n", personRelationType.getCommentText());
}

@Test
Expand Down Expand Up @@ -383,7 +382,6 @@ public void fillsOutRetligHandleevneVaergeForVaerge() {
assertTidspunktTypeEquals(at(2005, Calendar.AUGUST, 21), personFlerRelationType.getVirkning().getFraTidspunkt());
assertTidspunktTypeEquals(at(2011, Calendar.DECEMBER, 24), personFlerRelationType.getVirkning().getTilTidspunkt());
assertEquals("URN:Aktoer:Importer", personFlerRelationType.getVirkning().getAktoerRef().getURNIdentifikator());
assertEquals("Linje 1\n\n\nLinje 4\n", personFlerRelationType.getCommentText());
}

@Test
Expand Down Expand Up @@ -456,7 +454,7 @@ public void fillsOutErstatningFor() {
person.gaeldendeCPR = "0987654321";
CurrentPersonData cp = new CurrentPersonData(person, null, null, null, null, null, null, null, null, null, null, null, null, null);
PersonType personType = converter.convert(cp);
assertEquals("URN:CPR:0987654321", personType.getRegistrering().get(0).getRelationListe().getErstatningAf().get(0).getReferenceID().getURNIdentifikator());
assertEquals("URN:CPR:0987654321", personType.getRegistrering().get(0).getRelationListe().getErstatningFor().get(0).getReferenceID().getURNIdentifikator());
}

@Test
Expand Down Expand Up @@ -519,7 +517,7 @@ private BarnRelation createBarnRelation(String cpr, String barnCpr) {
}

private CivilStatusKodeType getCivilStatusKode(PersonType personType) {
return personType.getRegistrering().get(0).getTilstandListe().getCivilStatus().getCivilStatusKode();
return personType.getRegistrering().get(0).getTilstandListe().getCivilStatus().get(0).getCivilStatusKode();
}

private Date at(int year, int month, int day) {
Expand Down
Expand Up @@ -3,6 +3,10 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
Expand Down Expand Up @@ -37,9 +41,9 @@
public class OioXmlProduction {
private static final String XML_SCHEMA_NS = "http://www.w3.org/2001/XMLSchema";
// the initial set of schemas we want to build production schemas for
private Set<String> initialSchemaLocations = new HashSet<String>();
private Set<URI> initialSchemaLocations = new HashSet<URI>();
// maps schemaLocation URLs to Documents
private Map<String, Document> oioXmlSchemas = new HashMap<String, Document>();
private Map<URI, Document> oioXmlSchemas = new HashMap<URI, Document>();
// maps namespaces to Documents (the resulting production schema for the namespace)
private Map<String, Document> productionSchemas = new HashMap<String, Document>();
// maps namespaces to the namespace prefix used for that namespace in production schemas
Expand Down Expand Up @@ -133,7 +137,7 @@ private String getTargetNamespace(Document schema) {
}

private void downloadAndParseAllSchemas() throws Exception {
Set<String> unprocessedSchemaLocations = new HashSet<String>();
Set<URI> unprocessedSchemaLocations = new HashSet<URI>();
unprocessedSchemaLocations.addAll(initialSchemaLocations);
while(!unprocessedSchemaLocations.isEmpty()) {
processAnotherSchema(unprocessedSchemaLocations);
Expand All @@ -155,21 +159,23 @@ private Set<String> getReferencedSchemaLocations(Document doc) {
return result;
}

private void processAnotherSchema(Set<String> unprocessedSchemaLocations) throws Exception {
Iterator<String> iterator = unprocessedSchemaLocations.iterator();
String schemaLocation = iterator.next();
private void processAnotherSchema(Set<URI> unprocessedSchemaLocations) throws Exception {
Iterator<URI> iterator = unprocessedSchemaLocations.iterator();
URI schemaLocation = iterator.next();
iterator.remove();
System.out.println("Getting schema " + schemaLocation);
Document schema = getSchema(schemaLocation);
oioXmlSchemas.put(schemaLocation, schema);
Set<String> referencedSchemaLocations = getReferencedSchemaLocations(schema);
referencedSchemaLocations.removeAll(oioXmlSchemas.keySet());
unprocessedSchemaLocations.addAll(referencedSchemaLocations);
for(String loc : referencedSchemaLocations) {
unprocessedSchemaLocations.add(createAbsoluteUri(schemaLocation, loc));
}
}

private Document getSchema(String schemaLocation) throws Exception {
private Document getSchema(URI schemaLocation) throws Exception {
DocumentBuilder dBuilder = getDocumentBuilder();
return dBuilder.parse(schemaLocation);
return dBuilder.parse(schemaLocation.toURL().toExternalForm());
}

private DocumentBuilder getDocumentBuilder()
Expand Down Expand Up @@ -266,7 +272,7 @@ private void printSchemasToFiles() throws Exception {

public void buildProductionSchemas() throws Exception {
downloadAndParseAllSchemas();
for(String schemaLocation : oioXmlSchemas.keySet()) {
for(URI schemaLocation : oioXmlSchemas.keySet()) {
System.out.println(schemaLocation);
}
decideNamespacePrefixes();
Expand All @@ -280,9 +286,25 @@ public void buildProductionSchemas() throws Exception {
printSchemasToFiles();
}

public OioXmlProduction(Collection<String> initialSchemaUrls, String outputDirectory){
public OioXmlProduction(Collection<String> initialSchemaUrls, String outputDirectory) throws MalformedURLException, URISyntaxException{
this.outputDirectory = outputDirectory;
this.initialSchemaLocations.addAll(initialSchemaUrls);
for(String schemaUrl : initialSchemaUrls) {
initialSchemaLocations.add(createAbsoluteUri(null, schemaUrl));
}
}

private URI createAbsoluteUri(URI locUri, String path) throws URISyntaxException {
URI pathUri = new URI(path);
pathUri = pathUri.normalize();
if(pathUri.isAbsolute()) {
return pathUri;
}
if(locUri == null) {
// local file system
File file = new File(path);
return file.getAbsoluteFile().toURI().normalize();
}
return locUri.resolve(path).normalize();
}

public static void main(String[] args) throws Exception{
Expand Down
4 changes: 2 additions & 2 deletions subprojects/part-api/part-api.gradle
Expand Up @@ -3,15 +3,15 @@ configurations {
}

dependencies {
jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.3-2'
jaxb 'com.sun.xml.bind:jaxb-xjc:2.2.4-1'
}

task jaxb {
ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath)
actions = [
{
ant.xjc(destdir: 'build/generated-sources') {
schema(dir: 'src/main/xsd', includes: 'ns*.xsd')
schema(dir: 'schemas-production', includes: '*.xsd')
}
} as Action ]
}
82 changes: 82 additions & 0 deletions subprojects/part-api/schemas-original/Bruger.xsd
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
targetNamespace="urn:oio:sagdok:organisation:bruger:2.0.0"
xmlns:oio="urn:oio:definitions:1.0.0"
xmlns:bruger="urn:oio:sagdok:organisation:bruger:2.0.0"
xmlns:orgfaelles="urn:oio:sagdok:organisation:2.0.0"
xmlns:sd="urn:oio:sagdok:3.0.0"
oio:mapping="urn:oio:sagdok:MPD:3.0.0">

<import namespace = "urn:oio:sagdok:organisation:2.0.0" schemaLocation="OrganisationFaelles.xsd"/>
<import namespace = "urn:oio:sagdok:3.0.0" schemaLocation="SagDokObjekt.xsd"/>

<element name="Bruger" type="bruger:BrugerType" oio:definition="urn:oio:sagdok:bruger:ADD:2.0.0"/>
<complexType name="BrugerType" oio:definition="urn:oio:sagdok:bruger:ADD:2.0.0">
<complexContent>
<extension base="orgfaelles:AktoerType">
<sequence>
<element ref="bruger:Registrering" maxOccurs="unbounded" oio:content="registreringer"/>
</sequence>
</extension>
</complexContent>
</complexType>

<element name="AttributListe" type="bruger:AttributListeType" oio:definition="urn:oio:sagdok:brugerattributliste:ADD:2.0.0"/>
<complexType name="AttributListeType" oio:definition="urn:oio:sagdok:brugerattributliste:ADD:2.0.0">
<sequence>
<element ref="bruger:Egenskab" maxOccurs="unbounded" oio:content="egenskaber"/>
<element ref="sd:LokalUdvidelse" minOccurs="0" oio:content="lokaludvidelse"/>
</sequence>
</complexType>

<element name="TilstandListe" type="bruger:TilstandListeType" oio:definition="urn:oio:sagdok:brugertilstandliste:ADD:2.0.0"/>
<complexType name="TilstandListeType" oio:definition="urn:oio:sagdok:brugertilstandliste:ADD:2.0.0">
<sequence>
<element ref="orgfaelles:Gyldighed" maxOccurs="unbounded" oio:content="gyldighed"/>
<element ref="sd:LokalUdvidelse" minOccurs="0" oio:content="lokaludvidelse"/>
</sequence>
</complexType>

<element name="RelationListe" type="bruger:RelationListeType" oio:definition="urn:oio:sagdok:brugerrelationliste:ADD:2.0.0"/>
<complexType name="RelationListeType" oio:definition="urn:oio:sagdok:brugerrelationliste:ADD:2.0.0">
<sequence>
<element ref="sd:Adresser" minOccurs="0" maxOccurs="unbounded" oio:content="adresser"/>
<element ref="sd:BrugerTyper" minOccurs="0" maxOccurs="unbounded" oio:content="brugertyper"/>
<element ref="sd:Opgaver" minOccurs="0" maxOccurs="unbounded" oio:content="opgaver"/>
<element ref="sd:Tilhoerer" minOccurs="0" maxOccurs="unbounded" oio:content="tilhoerer"/>
<element ref="sd:TilknyttedeEnheder" minOccurs="0" maxOccurs="unbounded" oio:content="tilknyttedeenheder"/>
<element ref="sd:TilknyttedeFunktioner" minOccurs="0" maxOccurs="unbounded" oio:content="tilknyttedefunktioner"/>
<element ref="sd:TilknyttedeInteressefaellesskaber" minOccurs="0" maxOccurs="unbounded" oio:content="tilknyttedeinteressefaellesskaber"/>
<element ref="sd:TilknyttedeOrganisationer" minOccurs="0" maxOccurs="unbounded" oio:content="tilknyttedeorganisationer"/>
<element ref="sd:TilknyttedePersoner" minOccurs="0" maxOccurs="unbounded" oio:content="tilknyttedepersoner"/>
<element ref="sd:TilknyttedeItSystemer" minOccurs="0" maxOccurs="unbounded" oio:content="tilknyttedeitsystemer"/>
<element ref="sd:LokalUdvidelse" minOccurs="0" oio:content="lokaludvidelse"/>
</sequence>
</complexType>

<element name="Registrering" type="bruger:RegistreringType" oio:definition="urn:oio:sagdok:brugerregistrering:ADD:2.0.0"/>
<complexType name="RegistreringType" oio:definition="urn:oio:sagdok:brugerregistrering:ADD:2.0.0">
<complexContent>
<extension base="sd:RegistreringType">
<sequence>
<element ref="bruger:AttributListe" oio:content="attributter"/>
<element ref="bruger:TilstandListe" oio:content="tilstande"/>
<element ref="bruger:RelationListe" oio:content="relationer"/>
</sequence>
</extension>
</complexContent>
</complexType>

<element name="Egenskab" type="bruger:EgenskabType" oio:definition="urn:oio:sagdok:brugeregenskaber:ADD:1.0.0"/>
<complexType name="EgenskabType" oio:definition="urn:oio:sagdok:brugeregenskaber:ADD:1.0.0">
<sequence>
<element ref="sd:BrugerNavn" minOccurs="0" oio:content="brugernavn"/>
<element ref="sd:BrugerTypeTekst" minOccurs="0" oio:content="brugertype"/>
<element ref="sd:BrugervendtNoegleTekst" oio:content="brugervendtnoegle"/>
<element ref="sd:Virkning" minOccurs="0" oio:content="virkning"/>
</sequence>
</complexType>

</schema>

0 comments on commit 08d441e

Please sign in to comment.