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

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

/*
 * 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.Set;
import java.util.TreeSet;

import org.eclipse.lyo.oslc4j.core.annotation.OslcAllowedValue;
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;

/**
 * @see http://open-services.net/wiki/automation/OSLC-Automation-Specification-Version-2.0/#Resource_AutomationRequest
 */
@Deprecated
@OslcResourceShape(title = "Automation Request Resource Shape", describes = AutomationConstants.TYPE_AUTOMATION_REQUEST)
@OslcNamespace(AutomationConstants.AUTOMATION_NAMESPACE)
public class AutomationRequest
extends AbstractResource
{
	private final Set      contributors                = new TreeSet<>();
    private final Set      creators                    = new TreeSet<>();
    private final Set      rdfTypes                    = new TreeSet<>();
    private final Set   subjects                    = new TreeSet<>();
    private final Set      states                      = new TreeSet<>();
    private final Set inputParameters    = new TreeSet<>();

    private Date     created;
    private String   description;
    private String   identifier;
    private URI      instanceShape;
    private Date     modified;
    private URI      serviceProvider;
    private String   title;
    private URI      desiredState;
    private Link      executesAutomationPlan;

	public AutomationRequest()
	{
		super();

		rdfTypes.add(URI.create(AutomationConstants.TYPE_AUTOMATION_REQUEST));
	}

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

		rdfTypes.add(URI.create(AutomationConstants.TYPE_AUTOMATION_REQUEST));
     }

    protected URI getRdfType() {
    	return URI.create(AutomationConstants.TYPE_AUTOMATION_REQUEST);
    }

    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);
    }

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

    public void addState(final URI state)
    {
        this.states.add(state);
    }

    public void addInputParameter(final ParameterInstance parameter)
    {
        this.inputParameters.add(parameter);
    }

    @OslcDescription("The person(s) who are responsible for the work needed to complete the automation request.")
    @OslcName("contributor")
    @OslcPropertyDefinition(OslcConstants.DCTERMS_NAMESPACE + "contributor")
    @OslcRange(QmConstants.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(QmConstants.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")
    @OslcTitle("Service Provider")
    public URI getServiceProvider()
    {
        return serviceProvider;
    }

    @OslcDescription("Used to indicate the desired state of the Automation Request based on values defined by the service provider.")
    @OslcPropertyDefinition(AutomationConstants.AUTOMATION_NAMESPACE + "desiredState")
    @OslcName("desiredState")
    @OslcOccurs(Occurs.ZeroOrOne)
    @OslcTitle("Desired State")
    @OslcAllowedValue({
    	AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_NEW,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_IN_PROGRESS,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_QUEUED,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_CANCELING,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_CANCELED,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_COMPLETE})
    public URI getDesiredState()
    {
        return desiredState;
    }

    @OslcDescription("Automation Plan run by the Automation Request.")
    @OslcPropertyDefinition(AutomationConstants.AUTOMATION_NAMESPACE + "executesAutomationPlan")
    @OslcName("executesAutomationPlan")
    @OslcOccurs(Occurs.ExactlyOne)
    @OslcTitle("Executes Automation Plan")
    public Link getExecutesAutomationPlan()
    {
        return executesAutomationPlan;
    }

    @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("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;
    }

    @OslcDescription("Used to indicate the state of the automation request based on values defined by the service provider.")
    @OslcOccurs(Occurs.OneOrMany)
    @OslcReadOnly(true)
    @OslcName("state")
    @OslcPropertyDefinition(AutomationConstants.AUTOMATION_NAMESPACE + "state")
    @OslcTitle("States")
    @OslcAllowedValue({
    	AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_NEW,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_IN_PROGRESS,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_QUEUED,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_CANCELING,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_CANCELED,
		AutomationConstants.AUTOMATION_NAMESPACE + AutomationConstants.STATE_COMPLETE})
    public URI[] getStates()
    {
        return states.toArray(new URI[states.size()]);
    }


    @OslcDescription("Parameters provided when Automation Requests are created.")
    @OslcOccurs(Occurs.ZeroOrMany)
    @OslcName("inputParameter")
    @OslcPropertyDefinition(AutomationConstants.AUTOMATION_NAMESPACE + "inputParameter")
    @OslcReadOnly(false)
    @OslcTitle("Input Parameter")
    public ParameterInstance[] getInputParameters()
    {
        return inputParameters.toArray(new ParameterInstance[inputParameters.size()]);
    }

    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 setDesiredState(final URI desiredState)
    {
        this.desiredState = desiredState;
    }

    public void setExecutesAutomationPlan(final Link executesAutomationPlan)
    {
        this.executesAutomationPlan = executesAutomationPlan;
    }

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

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

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

    public void setStates(final URI[] states)
    {
        this.states.clear();

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

    public void setInputParameters(final ParameterInstance[] parameters)
    {
        this.inputParameters.clear();

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

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy