org.eclipse.osee.orcs.rest.internal.AttributeResource.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.osee.orcs.rest.internal.AttributeResource.java

Source

/*******************************************************************************
 * Copyright (c) 2004, 2007 Boeing.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Boeing - initial API and implementation
 *******************************************************************************/
package org.eclipse.osee.orcs.rest.internal;

import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.UriInfo;
import org.eclipse.osee.framework.core.data.IOseeBranch;
import org.eclipse.osee.framework.core.data.TokenFactory;
import org.eclipse.osee.framework.jdk.core.type.OseeCoreException;
import org.eclipse.osee.orcs.data.ArtifactReadable;
import org.eclipse.osee.orcs.data.AttributeReadable;
import org.eclipse.osee.orcs.search.QueryBuilder;
import org.eclipse.osee.orcs.search.QueryFactory;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;

/**
 * @author Roberto E. Escobar
 */
public class AttributeResource {

    @Context
    private final UriInfo uriInfo;
    @Context
    private final Request request;

    private final Long branchUuid;
    private final String artifactUuid;
    private final int attrId;
    private final int transactionId;

    public AttributeResource(UriInfo uriInfo, Request request, Long branchUuid, String artifactUuid,
            int attributeId) {
        this(uriInfo, request, branchUuid, artifactUuid, attributeId, -1);
    }

    public AttributeResource(UriInfo uriInfo, Request request, Long branchUuid, String artifactUuid,
            int attributeId, int transactionId) {
        this.uriInfo = uriInfo;
        this.request = request;
        this.branchUuid = branchUuid;
        this.artifactUuid = artifactUuid;
        this.attrId = attributeId;
        this.transactionId = transactionId;
    }

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getAsText() throws OseeCoreException {
        IOseeBranch branch = TokenFactory.createBranch(branchUuid, "");
        QueryFactory factory = OrcsApplication.getOrcsApi().getQueryFactory(null);
        QueryBuilder queryBuilder = factory.fromBranch(branch).andGuid(artifactUuid);
        if (transactionId > 0) {
            queryBuilder.fromTransaction(transactionId);
        }
        ArtifactReadable exactlyOne = queryBuilder.getResults().getExactlyOne();

        Optional<? extends AttributeReadable<Object>> item = Iterables.tryFind(exactlyOne.getAttributes(),
                new Predicate<AttributeReadable<Object>>() {
                    @Override
                    public boolean apply(AttributeReadable<Object> attribute) {
                        return attribute.getLocalId() == attrId;
                    }
                });

        String toReturn = "";
        if (item.isPresent()) {
            Object value = item.get().getValue();
            if (value != null) {
                toReturn = value.toString();
            }
        }
        return toReturn;
    }
}