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

org.eclipse.lyo.client.oslc.resources.Requirement Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2020 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License 1.0
 * which is available at http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */
package org.eclipse.lyo.client.oslc.resources;

import java.net.URI;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

import org.eclipse.lyo.oslc4j.core.annotation.OslcDescription;
import org.eclipse.lyo.oslc4j.core.annotation.OslcName;
import org.eclipse.lyo.oslc4j.core.annotation.OslcNamespace;
import org.eclipse.lyo.oslc4j.core.annotation.OslcOccurs;
import org.eclipse.lyo.oslc4j.core.annotation.OslcPropertyDefinition;
import org.eclipse.lyo.oslc4j.core.annotation.OslcRange;
import org.eclipse.lyo.oslc4j.core.annotation.OslcReadOnly;
import org.eclipse.lyo.oslc4j.core.annotation.OslcResourceShape;
import org.eclipse.lyo.oslc4j.core.annotation.OslcTitle;
import org.eclipse.lyo.oslc4j.core.annotation.OslcValueType;
import org.eclipse.lyo.oslc4j.core.model.AbstractResource;
import org.eclipse.lyo.oslc4j.core.model.Link;
import org.eclipse.lyo.oslc4j.core.model.Occurs;
import org.eclipse.lyo.oslc4j.core.model.OslcConstants;
import org.eclipse.lyo.oslc4j.core.model.ValueType;


@Deprecated
@OslcNamespace(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE)
@OslcResourceShape(title = "Requirement Resource Shape", describes = RmConstants.TYPE_REQUIREMENT)
public class Requirement
	   extends AbstractResource
{

	private String title;
	private String description;
	private String identifier;
	private String   shortTitle;
	private final Set   subjects					= new TreeSet<>();
	private final Set	  creators					= new TreeSet<>();
	private final Set	  contributors				= new TreeSet<>();
	private Date created;
	private Date modified;
	private final Set	  rdfTypes					= new TreeSet<>();
	private URI	  serviceProvider;
	private URI	  instanceShape;


	// OSLC Links
	private final Set	 elaboratedBy				= new HashSet<>();
	private final Set	 elaborates		 			= new HashSet<>();

	private final Set	 specifiedBy		   		= new HashSet<>();
	private final Set	 specifies  					= new HashSet<>();

	private final Set	 affectedBy					= new HashSet<>();

	private final Set	 trackedBy			  	  	= new HashSet<>();

	private final Set	 implementedBy				= new HashSet<>();

	private final Set	 validatedBy					= new HashSet<>();

	private final Set	 satisfiedBy					= new HashSet<>();
	private final Set	 satisfies					= new HashSet<>();

	private final Set	 decomposedBy				= new HashSet<>();
	private final Set	 decomposes					= new HashSet<>();

	private final Set	 constrainedBy				= new HashSet<>();
	private final Set	 constrains					= new HashSet<>();


	public Requirement()
	{
		super();

		// Only add the type if Requirement is the created object
		if ( ! ( this instanceof RequirementCollection ) ) {
			rdfTypes.add(URI.create(RmConstants.TYPE_REQUIREMENT));
		}
	}

	public Requirement(final URI about)
	{
		super(about);

		// Only add the type if Requirement is the created object
		if ( ! ( this instanceof RequirementCollection ) ) {
			rdfTypes.add(URI.create(RmConstants.TYPE_REQUIREMENT));
		}
	}

	public void addSubject(final String subject)
	{
		this.subjects.add(subject);
	}

	public void addConstrains(final Link constrains)
	{
		this.constrains.add(constrains);
	}

	public void addConstrainedBy(final Link constrainedBy)
	{
		this.constrainedBy.add(constrainedBy);
	}

	public void addDecomposes(final Link decomposes)
	{
		this.decomposes.add(decomposes);
	}

	public void addDecomposedBy(final Link decomposedBy)
	{
		this.decomposedBy.add(decomposedBy);
	}

	public void addSatisfies(final Link satisfies)
	{
		this.satisfies.add(satisfies);
	}

	public void addSatisfiedBy(final Link satisfiedBy)
	{
		this.satisfiedBy.add(satisfiedBy);
	}

	public void addValidatedBy(final Link validatedBy)
	{
		this.validatedBy.add(validatedBy);
	}

	public void addTrackedBy(final Link trackedBy)
	{
		this.trackedBy.add(trackedBy);
	}

	public void addImplementedBy(final Link implementedBy)
	{
		this.implementedBy.add(implementedBy);
	}

	public void addAffectedBy(final Link affectedBy)
	{
		this.affectedBy.add(affectedBy);
	}

	public void addElaboratedBy(final Link elaboratedBy)
	{
		this.elaboratedBy.add(elaboratedBy);
	}

	public void addElaborates(final Link elaborates)
	{
		this.elaborates.add(elaborates);
	}

	public void addSpecifiedBy(final Link specifiedBy)
	{
		this.specifiedBy.add(specifiedBy);
	}

	public void addSpecifies(final Link specifies)
	{
		this.specifies.add(specifies);
	}

	public void addContributor(final URI contributor)
	{
		this.contributors.add(contributor);
	}

	public void addCreator(final URI creator)
	{
		this.creators.add(creator);
	}

	public void addRdfType(final URI rdfType)
	{
		this.rdfTypes.add(rdfType);
	}

	@OslcDescription("Tag or keyword for a resource. Each occurrence of a dcterms:subject property denotes an additional tag for the resource.")
	@OslcName("subject")
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "subject")
	@OslcReadOnly(false)
	@OslcTitle("Subjects")
	public String[] getSubjects()
	{
		return subjects.toArray(new String[subjects.size()]);
	}

	@OslcDescription("The subject is elaborated by the object.")
	@OslcName("elaboratedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "elaboratedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Elaborated By")
	public Link[] getElaboratedBy()
	{
		return elaboratedBy.toArray(new Link[elaboratedBy.size()]);
	}

	@OslcDescription("The object is elaborated by the subject.")
	@OslcName("elaborates")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "elaborates")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Elaborates")
	public Link[] getElaborates()
	{
		return elaborates.toArray(new Link[elaborates.size()]);
	}

	@OslcDescription("The subject is specified by the object.")
	@OslcName("specifiedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "specifiedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Specified By")
	public Link[] getSpecifiedBy()
	{
		return specifiedBy.toArray(new Link[specifiedBy.size()]);
	}

	@OslcDescription("The object is specified by the subject.")
	@OslcName("specifies")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "specifies")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Specifies")
	public Link[] getSpecifies()
	{
		return specifies.toArray(new Link[specifies.size()]);
	}


	@OslcDescription("Resource, such as a change request, which implements this requirement.")
	@OslcName("implementedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "implementedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Implemented By")
	public Link[] getImplementedBy()
	{
		return implementedBy.toArray(new Link[implementedBy.size()]);
	}

	@OslcDescription("Requirement is affected by a resource, such as a defect or issue.")
	@OslcName("affectedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "affectedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Affected By")
	public Link[] getAffectedBy()
	{
		return affectedBy.toArray(new Link[affectedBy.size()]);
	}

	@OslcDescription("Resource, such as a change request, which tracks this requirement.")
	@OslcName("trackedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "trackedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("tracked By")
	public Link[] getTrackedBy()
	{
		return trackedBy.toArray(new Link[trackedBy.size()]);
	}

	@OslcDescription("Resource, such as a test case, which validates this requirement.")
	@OslcName("validatedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "validatedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Validated By")
	public Link[] getValidatedBy()
	{
		return validatedBy.toArray(new Link[validatedBy.size()]);
	}

	@OslcDescription("The subject is satisfied by the object.")
	@OslcName("satisfiedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "satisfiedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Satisfied By")
	public Link[] getSatisfiedBy()
	{
		return satisfiedBy.toArray(new Link[satisfiedBy.size()]);
	}

	@OslcDescription("The object is satisfied by the subject.")
	@OslcName("satisfies")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "satisfies")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Satisfies")
	public Link[] getSatisfies()
	{
		return satisfies.toArray(new Link[satisfies.size()]);
	}

	@OslcDescription("The subject is decomposed by the object.")
	@OslcName("decomposedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "decomposedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("DecomposedBy")
	public Link[] getDecomposedBy()
	{
		return decomposedBy.toArray(new Link[decomposedBy.size()]);
	}

	@OslcDescription("The object is decomposed by the subject.")
	@OslcName("decomposes")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "decomposes")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Decomposes")
	public Link[] getDecomposes()
	{
		return decomposes.toArray(new Link[decomposes.size()]);
	}

	@OslcDescription("The subject is constrained by the object.")
	@OslcName("constrainedBy")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "constrainedBy")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("ConstrainedBy")
	public Link[] getConstrainedBy()
	{
		return constrainedBy.toArray(new Link[constrainedBy.size()]);
	}

	@OslcDescription("The object is constrained by the subject.")
	@OslcName("constrains")
	@OslcPropertyDefinition(RmConstants.REQUIREMENTS_MANAGEMENT_NAMESPACE + "constrains")
	@OslcRange(RmConstants.TYPE_REQUIREMENT)
	@OslcReadOnly(false)
	@OslcTitle("Constrains")
	public Link[] getConstrains()
	{
		return constrains.toArray(new Link[constrains.size()]);
	}

	@OslcDescription("The person(s) who are responsible for the work needed to complete the change request.")
	@OslcName("contributor")
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "contributor")
	@OslcRange(RmConstants.TYPE_PERSON)
	@OslcTitle("Contributors")
	public URI[] getContributors()
	{
		return contributors.toArray(new URI[contributors.size()]);
	}

	@OslcDescription("Timestamp of resource creation.")
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "created")
	@OslcReadOnly
	@OslcTitle("Created")
	public Date getCreated()
	{
		return created;
	}

	@OslcDescription("Creator or creators of resource.")
	@OslcName("creator")
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "creator")
	@OslcRange(RmConstants.TYPE_PERSON)
	@OslcTitle("Creators")
	public URI[] getCreators()
	{
		return creators.toArray(new URI[creators.size()]);
	}


	@OslcDescription("Descriptive text (reference: Dublin Core) about resource represented as rich text in XHTML content.")
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "description")
	@OslcTitle("Description")
	@OslcValueType(ValueType.XMLLiteral)
	public String getDescription()
	{
		return description;
	}


	@OslcDescription("A unique identifier for a resource. Assigned by the service provider when a resource is created. Not intended for end-user display.")
	@OslcOccurs(Occurs.ExactlyOne)
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "identifier")
	@OslcReadOnly
	@OslcTitle("Identifier")
	public String getIdentifier()
	{
		return identifier;
	}


	@OslcDescription("Resource Shape that provides hints as to resource property value-types and allowed values. ")
	@OslcPropertyDefinition(OslcConstants.OSLC_CORE_NAMESPACE + "instanceShape")
	@OslcRange(OslcConstants.TYPE_RESOURCE_SHAPE)
	@OslcTitle("Instance Shape")
	public URI getInstanceShape()
	{
		return instanceShape;
	}

	@OslcDescription("Timestamp last latest resource modification.")
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "modified")
	@OslcReadOnly
	@OslcTitle("Modified")
	public Date getModified()
	{
		return modified;
	}

	@OslcDescription("The resource type URIs.")
	@OslcName("type")
	@OslcPropertyDefinition(OslcConstants.RDF_NAMESPACE + "type")
	@OslcTitle("Types")
	public URI[] getRdfTypes()
	{
		return rdfTypes.toArray(new URI[rdfTypes.size()]);
	}


	@OslcDescription("The scope of a resource is a URI for the resource's OSLC Service Provider.")
	@OslcPropertyDefinition(OslcConstants.OSLC_CORE_NAMESPACE + "serviceProvider")
	@OslcRange(OslcConstants.TYPE_SERVICE_PROVIDER)
	@OslcTitle("Service Provider")
	public URI getServiceProvider()
	{
		return serviceProvider;
	}

	@OslcDescription("Short name identifying a resource, often used as an abbreviated identifier for presentation to end-users.")
	@OslcPropertyDefinition(OslcConstants.OSLC_CORE_NAMESPACE + "shortTitle")
	@OslcTitle("Short Title")
	@OslcValueType(ValueType.XMLLiteral)
	public String getShortTitle()
	{
		return shortTitle;
	}


	@OslcDescription("Title (reference: Dublin Core) or often a single line summary of the resource represented as rich text in XHTML content.")
	@OslcOccurs(Occurs.ExactlyOne)
	@OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "title")
	@OslcTitle("Title")
	@OslcValueType(ValueType.XMLLiteral)
	public String getTitle()
	{
		return title;
	}

	public void setConstrains(final Link[] constrains)
	{
		this.constrains.clear();

		if (constrains != null)
		{
			this.constrains.addAll(Arrays.asList(constrains));
		}
	}

	public void setConstrainedBy(final Link[] constrainedBy)
	{
		this.constrainedBy.clear();

		if (constrainedBy != null)
		{
			this.constrainedBy.addAll(Arrays.asList(constrainedBy));
		}
	}

	public void setDecomposes(final Link[] decomposes)
	{
		this.affectedBy.clear();

		if (decomposes != null)
		{
			this.decomposes.addAll(Arrays.asList(decomposes));
		}
	}

	public void setDecomposedBy(final Link[] decomposedBy)
	{
		this.decomposedBy.clear();

		if (decomposedBy != null)
		{
			this.decomposedBy.addAll(Arrays.asList(decomposedBy));
		}
	}

	public void setSatisfies(final Link[] satisfies)
	{
		this.satisfies.clear();

		if (satisfies != null)
		{
			this.satisfies.addAll(Arrays.asList(satisfies));
		}
	}

	public void setSatisfiedBy(final Link[] satisfiedBy)
	{
		this.satisfiedBy.clear();

		if (satisfiedBy != null)
		{
			this.satisfiedBy.addAll(Arrays.asList(satisfiedBy));
		}
	}

	public void setValidatedBy(final Link[] validatedBy)
	{
		this.validatedBy.clear();

		if (validatedBy != null)
		{
			this.validatedBy.addAll(Arrays.asList(validatedBy));
		}
	}

	public void setTrackedBy(final Link[] trackedBy)
	{
		this.trackedBy.clear();

		if (trackedBy != null)
		{
			this.trackedBy.addAll(Arrays.asList(trackedBy));
		}
	}

	public void setAffectedBy(final Link[] affectedBy)
	{
		this.affectedBy.clear();

		if (affectedBy != null)
		{
			this.affectedBy.addAll(Arrays.asList(affectedBy));
		}
	}

	public void setImplementedBy(final Link[] implementedBy)
	{
		this.implementedBy.clear();

		if (implementedBy != null)
		{
			this.implementedBy.addAll(Arrays.asList(implementedBy));
		}
	}

	public void setElaboratedBy(final Link[] elaboratedBy)
	{
		this.elaboratedBy.clear();

		if (elaboratedBy != null)
		{
			this.elaboratedBy.addAll(Arrays.asList(elaboratedBy));
		}
	}

	public void setElaborates(final Link[] elaborates)
	{
		this.elaborates.clear();

		if (elaborates != null)
		{
			this.elaborates.addAll(Arrays.asList(elaborates));
		}
	}

	public void setSpecifiedBy(final Link[] specifiedBy)
	{
		this.specifiedBy.clear();

		if (specifiedBy != null)
		{
			this.specifiedBy.addAll(Arrays.asList(specifiedBy));
		}
	}


	public void setSpecifies(final Link[] specifies)
	{
		this.specifies.clear();

		if (specifies != null)
		{
			this.specifies.addAll(Arrays.asList(specifies));
		}
	}

	public void setContributors(final URI[] contributors)
	{
		this.contributors.clear();

		if (contributors != null)
		{
			this.contributors.addAll(Arrays.asList(contributors));
		}
	}

	public void setCreated(final Date created)
	{
		this.created = created;
	}

	public void setCreators(final URI[] creators)
	{
		this.creators.clear();

		if (creators != null)
		{
			this.creators.addAll(Arrays.asList(creators));
		}
	}


	public void setDescription(final String description)
	{
		this.description = description;
	}


	public void setIdentifier(final String identifier)
	{
		this.identifier = identifier;
	}


	public void setInstanceShape(final URI instanceShape)
	{
		this.instanceShape = instanceShape;
	}

	public void setModified(final Date modified)
	{
		this.modified = modified;
	}

	public void setRdfTypes(final URI[] rdfTypes)
	{
		this.rdfTypes.clear();

		if (rdfTypes != null)
		{
			this.rdfTypes.addAll(Arrays.asList(rdfTypes));
		}
	}


	public void setServiceProvider(final URI serviceProvider)
	{
		this.serviceProvider = serviceProvider;
	}

	public void setShortTitle(final String shortTitle)
	{
		this.shortTitle = shortTitle;
	}


	public void setTitle(final String title)
	{
		this.title = title;
	}


	public void setSubjects(final String[] subjects)
	{
		this.subjects.clear();

		if (subjects != null)
		{
			this.subjects.addAll(Arrays.asList(subjects));
		}
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy