/* * Copyright 2003-2010 Tufts University Licensed under the * Educational Community License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may * obtain a copy of the License at * * http://www.osedu.org/licenses/ECL-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS IS" * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * InfoField.java * * Created on March 8, 2004, 11:06 AM */ package tufts.oki.dr.fedora; /** * * @author akumar03 */ public class InfoField implements osid.dr.InfoField { /** Creates a new instance of InfoField */ private osid.OsidOwner owner = null; private java.util.Vector infoFieldVector = new java.util.Vector(); private osid.dr.InfoStructure infoStructure = null; private osid.shared.Id id = null; private java.io.Serializable value = null; private osid.dr.InfoPart infoPart = null; public InfoField() { } public InfoField(osid.shared.Id id,osid.dr.InfoStructure infoStructure, osid.dr.InfoPart infoPart,java.io.Serializable value) { this.id = id; this.infoStructure = infoStructure; this.infoPart = infoPart; this.value = value; } public String toString() { return getClass().getName() + "[" + id + " " + value + "]"; } /** * Get the unique Id for this InfoField. * * @return osid.shared.Id A unique Id that is usually set by a create * method's implementation * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED */ public osid.shared.Id getId() throws osid.dr.DigitalRepositoryException { return this.id; } /** * Create an InfoField. InfoRecords are composed of InfoFields. InfoFields * can also contain other InfoFields. Each InfoRecord is associated with * a specific InfoStructure and each InfoField is associated with a * specific InfoPart. * * @param infoPartId * @param value * * @return osid.dr.InfoField * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED, NULL_ARGUMENT, UNKNOWN_ID */ public osid.dr.InfoField createInfoField(osid.shared.Id infoPartId, java.io.Serializable value) throws osid.dr.DigitalRepositoryException { if ((infoPartId == null) || (value == null)) { throw new osid.dr.DigitalRepositoryException(osid.dr.DigitalRepositoryException.NULL_ARGUMENT); } osid.dr.InfoPartIterator ipi = infoStructure.getInfoParts(); while (ipi.hasNext()) { osid.dr.InfoPart infoPart = ipi.next(); try { if (infoPartId.isEqual(infoPart.getId())) { osid.dr.InfoField infoField = new InfoField(infoPartId,infoStructure,infoPart, value); infoFieldVector.addElement(infoField); this.infoPart = infoPart; return infoField; } } catch (osid.OsidException oex) { throw new osid.dr.DigitalRepositoryException(osid.dr.DigitalRepositoryException.OPERATION_FAILED); } } throw new osid.dr.DigitalRepositoryException(osid.dr.DigitalRepositoryException.UNKNOWN_ID); } /** * Delete an InfoField and all its InfoFields. * * @param infoFieldId * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED, NULL_ARGUMENT, UNKNOWN_ID */ public void deleteInfoField(osid.shared.Id infoFieldId) throws osid.dr.DigitalRepositoryException { throw new osid.dr.DigitalRepositoryException("A field can't be deleted from FEDORA Repository"); } /** * Get all the InfoFields in the InfoField. Iterators return a set, one at * a time. The Iterator's hasNext method returns true if there are * additional objects available; false otherwise. The Iterator's next * method returns the next object. * * @return osid.dr.InfoFieldIterator The order of the objects returned by * the Iterator is not guaranteed. * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED */ public osid.dr.InfoFieldIterator getInfoFields() throws osid.dr.DigitalRepositoryException { return (osid.dr.InfoFieldIterator) (new InfoFieldIterator(infoFieldVector)); } /** * Get the for this InfoField. * * @return java.io.Serializable * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED */ public java.io.Serializable getValue() throws osid.dr.DigitalRepositoryException { return this.value; } /** * Update the for this InfoField. * * @param * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED, NULL_ARGUMENT */ public void updateValue(java.io.Serializable value) throws osid.dr.DigitalRepositoryException { if (value == null) { throw new osid.dr.DigitalRepositoryException(osid.dr.DigitalRepositoryException.NULL_ARGUMENT); } this.value = value; } /** * Get the InfoPart associated with this InfoField. * * @return osid.dr.InfoPart * * @throws An exception with one of the following messages defined in * osid.dr.DigitalRepositoryException may be thrown: * OPERATION_FAILED */ public osid.dr.InfoPart getInfoPart() throws osid.dr.DigitalRepositoryException { return this.infoPart; } }