Package org.dspace.app.cris.model

Source Code of org.dspace.app.cris.model.ResearchObject

/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* https://github.com/CILEA/dspace-cris/wiki/License
*/
package org.dspace.app.cris.model;

import it.cilea.osd.common.core.TimeStampInfo;
import it.cilea.osd.jdyna.model.AType;

import java.util.List;
import java.util.Map;

import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import org.dspace.app.cris.model.jdyna.DynamicAdditionalFieldStorage;
import org.dspace.app.cris.model.jdyna.DynamicNestedObject;
import org.dspace.app.cris.model.jdyna.DynamicNestedPropertiesDefinition;
import org.dspace.app.cris.model.jdyna.DynamicNestedProperty;
import org.dspace.app.cris.model.jdyna.DynamicObjectType;
import org.dspace.app.cris.model.jdyna.DynamicPropertiesDefinition;
import org.dspace.app.cris.model.jdyna.DynamicProperty;
import org.dspace.app.cris.model.jdyna.DynamicTypeNestedObject;


@Entity
@Table(name = "cris_do", uniqueConstraints = @UniqueConstraint(columnNames={"sourceID","sourceRef"}))
@NamedQueries({
        @NamedQuery(name = "ResearchObject.findAll", query = "from ResearchObject order by id"),
        @NamedQuery(name = "ResearchObject.count", query = "select count(*) from ResearchObject"),
        @NamedQuery(name = "ResearchObject.countByType", query = "select count(*) from ResearchObject where typo = ?"),
        @NamedQuery(name = "ResearchObject.paginate.id.asc", query = "from ResearchObject order by id asc"),
        @NamedQuery(name = "ResearchObject.paginate.id.desc", query = "from ResearchObject order by id desc"),
        @NamedQuery(name = "ResearchObject.paginate.status.asc", query = "from ResearchObject order by status asc"),
        @NamedQuery(name = "ResearchObject.paginate.status.desc", query = "from ResearchObject order by status desc"),
        @NamedQuery(name = "ResearchObject.paginate.sourceID.asc", query = "from ResearchObject order by sourceReference.sourceID asc"),
        @NamedQuery(name = "ResearchObject.paginate.sourceID.desc", query = "from ResearchObject order by sourceReference.sourceID desc"),
        @NamedQuery(name = "ResearchObject.paginate.uuid.asc", query = "from ResearchObject order by uuid asc"),
        @NamedQuery(name = "ResearchObject.paginate.uuid.desc", query = "from ResearchObject order by uuid desc"),
        @NamedQuery(name = "ResearchObject.uniqueBySourceID", query = "from ResearchObject where sourceReference.sourceID = ?"),
        @NamedQuery(name = "ResearchObject.uniqueUUID", query = "from ResearchObject where uuid = ?"),
        @NamedQuery(name = "ResearchObject.uniqueByCrisID", query = "from ResearchObject where crisID = ?"),
        @NamedQuery(name = "ResearchObject.paginateByType.id.asc", query = "from ResearchObject where (typo = :par0) order by id asc"),
        @NamedQuery(name = "ResearchObject.paginateByType.id.desc", query = "from ResearchObject where (typo = :par0) order by id desc")
  })
public class ResearchObject extends ACrisObjectWithTypeSupport<DynamicProperty, DynamicPropertiesDefinition, DynamicNestedProperty, DynamicNestedPropertiesDefinition, DynamicNestedObject, DynamicTypeNestedObject>
{
   
    /** DB Primary key */
    @Id
    @GeneratedValue(generator = "CRIS_DYNAOBJ_SEQ")
    @SequenceGenerator(name = "CRIS_DYNAOBJ_SEQ", sequenceName = "CRIS_DYNAOBJ_SEQ")
    private Integer id;
   
    /** timestamp info for creation and last modify */
    @Embedded
    private TimeStampInfo timeStampInfo;
   
    /**
     * Map of additional custom data
     */
    @Embedded
    private DynamicAdditionalFieldStorage dynamicField;

    @ManyToOne
    private DynamicObjectType typo;
   
    public ResearchObject()
    {
        this.dynamicField = new DynamicAdditionalFieldStorage();
    }
   
    public void setDynamicField(DynamicAdditionalFieldStorage dynamicField)
    {
        this.dynamicField = dynamicField;
    }

    public DynamicAdditionalFieldStorage getDynamicField()
    {
        if (this.dynamicField == null)
        {
            this.dynamicField = new DynamicAdditionalFieldStorage();
        }
        return dynamicField;
    }
   
    @Override
    public List<DynamicProperty> getAnagrafica()
    {       
        return dynamicField.getAnagrafica();
    }

    @Override
    public Class<DynamicProperty> getClassProperty()
    {
        return this.dynamicField.getClassProperty();
    }

    @Override
    public Class<DynamicPropertiesDefinition> getClassPropertiesDefinition()
    {
        return this.dynamicField.getClassPropertiesDefinition();
    }

    @Override
    public Integer getId()
    {
        return id;
    }

    @Override
    public DynamicObjectType getTypo()
    {       
        return typo;
    }

    @Override
    public void setTypo(AType<DynamicPropertiesDefinition> typo)
    {
        this.typo = (DynamicObjectType)typo;       
    }

    @Override
    public Map<String, List<DynamicProperty>> getAnagrafica4view()
    {
        return this.dynamicField.getAnagrafica4view();
    }

    @Override
    public void setAnagrafica(List<DynamicProperty> anagrafica)
    {
        this.dynamicField.setAnagrafica(anagrafica);
    }

    @Override
    public DynamicProperty createProprieta(
            DynamicPropertiesDefinition tipologiaProprieta)
            throws IllegalArgumentException
    {
        return this.dynamicField.createProprieta(tipologiaProprieta);
    }

    @Override
    public DynamicProperty createProprieta(
            DynamicPropertiesDefinition tipologiaProprieta, Integer posizione)
            throws IllegalArgumentException
    {
        return this.dynamicField.createProprieta(tipologiaProprieta, posizione);
    }

    @Override
    public boolean removeProprieta(DynamicProperty proprieta)
    {
        return this.dynamicField.removeProprieta(proprieta);
    }

    @Override
    public List<DynamicProperty> getProprietaDellaTipologia(
            DynamicPropertiesDefinition tipologiaProprieta)
    {
        return this.dynamicField.getProprietaDellaTipologia(tipologiaProprieta);
    }

    @Override
    public void inizializza()
    {
        this.dynamicField.inizializza();
       
    }

    @Override
    public void invalidateAnagraficaCache()
    {
        this.dynamicField.invalidateAnagraficaCache();
       
    }

    @Override
    public void pulisciAnagrafica()
    {
        this.dynamicField.pulisciAnagrafica();
    }

    @Override
    public String getIdentifyingValue()
    {
        return this.dynamicField.getIdentifyingValue();
    }

    @Override
    public String getDisplayValue()
    {
        return this.dynamicField.getDisplayValue();
    }

    @Override
    public String getPublicPath()
    {
        return CrisConstants.getAuthorityPrefix(this);
    }

    @Override
    public String getAuthorityPrefix()
    {
        return typo.getShortName();
    }

    @Override
    public TimeStampInfo getTimeStampInfo()
    {
        if (timeStampInfo == null)
        {
            timeStampInfo = new TimeStampInfo();
        }
        return timeStampInfo;
    }

    @Override
    public Class<DynamicNestedObject> getClassNested()
    {
        return DynamicNestedObject.class;
    }

    @Override
    public Class<DynamicTypeNestedObject> getClassTypeNested()
    {
        return DynamicTypeNestedObject.class;
    }

    @Override
    public int getType()
    {
        return getTypo().getId() + CrisConstants.CRIS_DYNAMIC_TYPE_ID_START;
    }

    @Override
    public String getName()
    {
        for (DynamicProperty title : this.getAnagrafica4view().get(getTypo().getShortName() + "name"))
        {
            return title.toString();
        }
        return null;
    }

    @Override
    public String getTypeText()
    {
        return CrisConstants.getEntityTypeText(getType());
    }

    public void setId(Integer id)
    {
        this.id = id;
    }

  @Override
  public boolean isDiscoverable() {
    return true;
  }

}
TOP

Related Classes of org.dspace.app.cris.model.ResearchObject

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.