/** * 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 * * http://www.dspace.org/license/ */ package org.dspace.rest.common; import org.dspace.core.Context; import javax.ws.rs.WebApplicationException; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import java.sql.SQLException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Metadata field representation * @author Terry Brady, Georgetown University. */ @XmlRootElement(name = "field") public class MetadataField { private int fieldId; private String name; private String element; private String qualifier; private String description; private MetadataSchema parentSchema; @XmlElement(required = true) private ArrayList<String> expand = new ArrayList<String>(); public MetadataField(){} public MetadataField(org.dspace.content.MetadataSchema schema, org.dspace.content.MetadataField field, String expand, Context context) throws SQLException, WebApplicationException{ setup(schema, field, expand, context); } private void setup(org.dspace.content.MetadataSchema schema, org.dspace.content.MetadataField field, String expand, Context context) throws SQLException{ List<String> expandFields = new ArrayList<String>(); if(expand != null) { expandFields = Arrays.asList(expand.split(",")); } StringBuilder sb = new StringBuilder(); sb.append(schema.getName()); sb.append("."); sb.append(field.getElement()); if (field.getQualifier()!=null) { sb.append("."); sb.append(field.getQualifier()); } this.setName(sb.toString()); this.setFieldId(field.getID()); this.setElement(field.getElement()); this.setQualifier(field.getQualifier()); this.setDescription(field.getScopeNote()); if (expandFields.contains("parentSchema") || expandFields.contains("all")) { this.addExpand("parentSchema"); parentSchema = new MetadataSchema(schema, "", context); } } public void setParentSchema(MetadataSchema schema) { this.parentSchema = schema; } public MetadataSchema getParentSchema() { return this.parentSchema; } public void setFieldId(int fieldId) { this.fieldId = fieldId; } public void setName(String name) { this.name = name; } public void setElement(String element) { this.element = element; } public void setQualifier(String qualifier) { this.qualifier = qualifier; } public void setDescription(String description) { this.description = description; } public int getFieldId() { return fieldId; } public String getName() { return name; } public String getQualifier() { return qualifier; } public String getElement() { return element; } public String getDescription() { return description; } public List<String> getExpand() { return expand; } public void setExpand(ArrayList<String> expand) { this.expand = expand; } public void addExpand(String expandableAttribute) { this.expand.add(expandableAttribute); } }