All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.legaldocml.akn.element.WorkProperties Maven / Gradle / Ivy

package io.legaldocml.akn.element;

import io.legaldocml.akn.util.AknList;
import io.legaldocml.akn.visitor.AknVisitor;
import io.legaldocml.io.XmlReader;
import io.legaldocml.io.XmlWriter;

import java.io.IOException;

import static io.legaldocml.akn.AknElements.FRBR_AUTHORITATIVE;
import static io.legaldocml.akn.AknElements.FRBR_COUNTRY;
import static io.legaldocml.akn.AknElements.FRBR_NAME;
import static io.legaldocml.akn.AknElements.FRBR_NUMBER;
import static io.legaldocml.akn.AknElements.FRBR_PRESCRIPTIVE;
import static io.legaldocml.akn.AknElements.FRBR_SUBTYPE;

/**
 * The group workProperties lists the properties that are characteristics of the FRBR Work level.
 *
 * 
 * 	
 * 		
 *          
 *          
 *          
 *          
 *          
 *          
 * 		
 * 	
 * 
* * @author Jacques Militello */ public abstract class WorkProperties extends CoreProperties { // Mandatory private final FRBRcountry country = new FRBRcountry(); // Optional private FRBRsubtype subtype; // Optional private AknList numbers; // Optional private AknList names; // Optional private FRBRprescriptive prescriptive; // Optional private FRBRauthoritative authoritative; public final FRBRcountry getFRBRcountry() { return this.country; } /** * {@inheritDoc} */ @Override public void write(XmlWriter writer) throws IOException { super.write(writer); this.country.write(writer); if (this.subtype != null) { this.subtype.write(writer); } if (this.numbers != null) { this.numbers.write(writer); } if (this.names != null) { this.names.write(writer); } if (this.prescriptive != null) { this.prescriptive.write(writer); } if (this.authoritative != null) { this.authoritative.write(writer); } } /** * {@inheritDoc} */ @Override public void read(XmlReader reader) { super.read(reader); if (reader.getQName().equalsLocalName(FRBR_COUNTRY)) { this.country.read(reader); reader.nextStartOrEndElement(); } else { } if (reader.getQName().equalsLocalName(FRBR_SUBTYPE)) { this.subtype = new FRBRsubtype(); this.subtype.read(reader); reader.nextStartOrEndElement(); } if (reader.getQName().equalsLocalName(FRBR_NUMBER)) { FRBRnumber number; this.numbers = new AknList<>(new FRBRnumber[4]); do { number = new FRBRnumber(); number.read(reader); this.numbers.add(number); reader.nextStartOrEndElement(); } while (reader.getQName().equalsLocalName(FRBR_NUMBER)); } if (reader.getQName().equalsLocalName(FRBR_NAME)) { FRBRname name; this.names = new AknList<>(new FRBRname[4]); do { name = new FRBRname(); name.read(reader); this.names.add(name); reader.nextStartOrEndElement(); } while (reader.getQName().equalsLocalName(FRBR_NAME)); } if (reader.getQName().equalsLocalName(FRBR_PRESCRIPTIVE)) { this.prescriptive = new FRBRprescriptive(); this.prescriptive.read(reader); reader.nextStartOrEndElement(); } if (reader.getQName().equalsLocalName(FRBR_AUTHORITATIVE)) { this.authoritative = new FRBRauthoritative(); this.authoritative.read(reader); reader.nextStartOrEndElement(); } } /** * {@inheritDoc} */ @Override public void accept(AknVisitor visitor) { super.accept(visitor); country.accept(visitor); if (this.subtype != null) { this.subtype.accept(visitor); } if (this.numbers != null) { this.numbers.accept(visitor); } if (this.names != null) { this.names.accept(visitor); } if (this.prescriptive != null) { this.prescriptive.accept(visitor); } if (this.authoritative != null) { this.authoritative.accept(visitor); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy