/** * Creates the lineage object if it does not already exists, then returns it. * * @return the lineage (never {@code null}). * @see #newLineage() */ private DefaultLineage lineage() { if (lineage == null) { lineage = new DefaultLineage(); } return lineage; }
/** * Invoked by JAXB at marshalling time for getting the actual metadata to write * inside the {@code <gmd:LI_Lineage>} XML element. * This is the value or a copy of the value given in argument to the {@code wrap} method. * * @return the metadata to be marshalled. */ @XmlElementRef public DefaultLineage getElement() { return DefaultLineage.castOrCopy(metadata); }
/** * Sets the type of resource and / or extents to which the lineage information applies. * * @param newValue the new type of resource. * * @since 0.5 */ public void setScope(final Scope newValue) { checkWritePermission(); scope = newValue; }
String value = stringValue(HISTORY); if (value != null) { lineage = new DefaultLineage(); lineage.setStatement(new SimpleInternationalString(value)); if (lineage == null) lineage = new DefaultLineage(); addIfAbsent(lineage.getSources(), new DefaultSource(value));
/** * Create a lineage to marshal. If {@code extension} is {@code false}, then this method uses * only properties defined in ISO 19115-1. If {@code extension} is {@code true}, then this * method adds an ISO 19115-2 property. */ private static DefaultLineage create(final boolean extension) { final DefaultLineage lineage = new DefaultLineage(); final DefaultSource source = new DefaultSource(); source.setDescription(new SimpleInternationalString("Description of source data level.")); lineage.getSources().add(source); if (extension) { source.setProcessedLevel(new DefaultIdentifier("DummyLevel")); } return lineage; }
/** * Verifies the unmarshalling result. */ private static void verify(final DefaultLineage lineage) { final Source source = TestUtilities.getSingleton(lineage.getSources()); assertEquals("source.description", "Description of source data level.", String.valueOf(source.getDescription())); }
/** * Constructs a new instance initialized with the values from the specified metadata object. * This is a <cite>shallow</cite> copy constructor, since the other metadata contained in the * given object are not recursively copied. * * @param object the metadata to copy values from, or {@code null} if none. * * @see #castOrCopy(Lineage) */ public DefaultLineage(final Lineage object) { super(object); if (object != null) { statement = object.getStatement(); processSteps = copyCollection(object.getProcessSteps(), ProcessStep.class); sources = copyCollection(object.getSources(), Source.class); if (object instanceof DefaultLineage) { scope = ((DefaultLineage) object).getScope(); additionalDocumentation = copyCollection(((DefaultLineage) object).getAdditionalDocumentation(), Citation.class); } } }
/** * Adds a general explanation of the data producer's knowledge about the lineage of a dataset. * If a statement already exists, the new one will be appended after a new line. * Storage location is: * * <ul> * <li>{@code metadata/resourceLineage/statement}</li> * </ul> * * @param statement explanation of the data producer's knowledge about the lineage, or {@code null} for no-operation. * * @see #addProcessDescription(CharSequence) */ public final void addLineage(final CharSequence statement) { final InternationalString i18n = trim(statement); if (i18n != null) { final DefaultLineage lineage = lineage(); lineage.setStatement(append(lineage.getStatement(), i18n)); } }
/** * Invoked by JAXB at both marshalling and unmarshalling time. * This attribute has been added by ISO 19115:2014 standard. * If (and only if) marshalling an older standard version, we omit this attribute. */ @XmlElement(name = "additionalDocumentation") private Collection<Citation> getDocumentation() { return FilterByVersion.CURRENT_METADATA.accept() ? getAdditionalDocumentation() : null; } }
addIfNotPresent(lineage().getSources(), source);
/** * Constructs a new instance initialized with the values from the specified metadata object. * This is a <cite>shallow</cite> copy constructor, since the other metadata contained in the * given object are not recursively copied. * * @param object the metadata to copy values from, or {@code null} if none. * * @see #castOrCopy(Lineage) */ public DefaultLineage(final Lineage object) { super(object); if (object != null) { statement = object.getStatement(); processSteps = copyCollection(object.getProcessSteps(), ProcessStep.class); sources = copyCollection(object.getSources(), Source.class); if (object instanceof DefaultLineage) { scope = ((DefaultLineage) object).getScope(); additionalDocumentation = copyCollection(((DefaultLineage) object).getAdditionalDocumentation(), Citation.class); } } }
/** * Creates the lineage object if it does not already exists, then returns it. * * @return the lineage (never {@code null}). * @see #newLineage() */ private DefaultLineage lineage() { if (lineage == null) { lineage = new DefaultLineage(); } return lineage; }
/** * Sets the general explanation of the data producers knowledge about the lineage of a dataset. * * @param newValue the new statement. */ public void setStatement(final InternationalString newValue) { checkWritePermission(); statement = newValue; }
/** * Invoked by JAXB at marshalling time for getting the actual metadata to write * inside the {@code <mrl:LI_Lineage>} XML element. * This is the value or a copy of the value given in argument to the {@code wrap} method. * * @return the metadata to be marshalled. */ @XmlElementRef public DefaultLineage getElement() { return DefaultLineage.castOrCopy(metadata); }
/** * Returns a SIS metadata implementation with the values of the given arbitrary implementation. * This method performs the first applicable action in the following choices: * * <ul> * <li>If the given object is {@code null}, then this method returns {@code null}.</li> * <li>Otherwise if the given object is already an instance of * {@code DefaultLineage}, then it is returned unchanged.</li> * <li>Otherwise a new {@code DefaultLineage} instance is created using the * {@linkplain #DefaultLineage(Lineage) copy constructor} * and returned. Note that this is a <cite>shallow</cite> copy operation, since the other * metadata contained in the given object are not recursively copied.</li> * </ul> * * @param object the object to get as a SIS implementation, or {@code null} if none. * @return a SIS implementation containing the values of the given object (may be the * given object itself), or {@code null} if the argument was null. */ public static DefaultLineage castOrCopy(final Lineage object) { if (object == null || object instanceof DefaultLineage) { return (DefaultLineage) object; } return new DefaultLineage(object); }
/** * Sets the general explanation of the data producers knowledge about the lineage of a dataset. * * @param newValue the new statement. */ public void setStatement(final InternationalString newValue) { checkWritePermission(statement); statement = newValue; }
/** * Returns a SIS metadata implementation with the values of the given arbitrary implementation. * This method performs the first applicable action in the following choices: * * <ul> * <li>If the given object is {@code null}, then this method returns {@code null}.</li> * <li>Otherwise if the given object is already an instance of * {@code DefaultLineage}, then it is returned unchanged.</li> * <li>Otherwise a new {@code DefaultLineage} instance is created using the * {@linkplain #DefaultLineage(Lineage) copy constructor} * and returned. Note that this is a <cite>shallow</cite> copy operation, since the other * metadata contained in the given object are not recursively copied.</li> * </ul> * * @param object the object to get as a SIS implementation, or {@code null} if none. * @return a SIS implementation containing the values of the given object (may be the * given object itself), or {@code null} if the argument was null. */ public static DefaultLineage castOrCopy(final Lineage object) { if (object == null || object instanceof DefaultLineage) { return (DefaultLineage) object; } return new DefaultLineage(object); }
/** * Sets the type of resource and / or extents to which the lineage information applies. * * @param newValue the new type of resource. * * @since 0.5 */ public void setScope(final Scope newValue) { checkWritePermission(scope); scope = newValue; }