001: /*
002: * Copyright 2004 Outerthought bvba and Schaubroeck nv
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.outerj.daisy.repository.schema;
017:
018: import org.outerj.daisy.repository.RepositoryException;
019: import org.outerx.daisy.x10.PartTypeDocument;
020:
021: import java.util.Date;
022:
023: /**
024: * Describes a type of part in the repository.
025: *
026: * <p>Instances are retrieved from {@link RepositorySchema}.
027: *
028: * <p>The equals method for PartType is supported, two part types are
029: * equal if all their defining data is equal, with exception of the ID.
030: */
031: public interface PartType extends DescriptionEnabled, LabelEnabled {
032: long getId();
033:
034: String getName();
035:
036: void setName(String name);
037:
038: /**
039: * Returns a string describing limitations on the allowed mime-types.
040: * An empty string means no restrictions. Otherwise, the string contains
041: * a comma-separated list of allowed mime-types.
042: */
043: String getMimeTypes();
044:
045: /**
046: * Specify the type of data that is allowed in parts of this type based
047: * on the mime-type.
048: *
049: * @param mimeTypes A comma-separated list of mime-types. If empty, all mime-types are allowed.
050: */
051: void setMimeTypes(String mimeTypes);
052:
053: boolean mimeTypeAllowed(String mimeType);
054:
055: /**
056: * Indicates if the content of the part is Daisy HTML (well-formed
057: * XML using HTML elements).
058: */
059: boolean isDaisyHtml();
060:
061: /**
062: * Sets the Daisy-HTML flag.
063: *
064: * <p>Note: when the argument daisyHTML is true, the link extractor will be forced
065: * to "daisy-html", for reasons of back-compatibility (in the past, link extractors
066: * were not explicitely configurable, and link extraction always happened for
067: * daisy-html parts). It is possible to override this again by calling
068: * setLinkExtractor after setDaisyHtml.
069: */
070: void setDaisyHtml(boolean daisyHtml);
071:
072: /**
073: *
074: * @param name allowed to be null
075: */
076: void setLinkExtractor(String name);
077:
078: /**
079: * Returns the name of the link extractor to use for parts of this type, can be null.
080: */
081: String getLinkExtractor();
082:
083: boolean isDeprecated();
084:
085: void setDeprecated(boolean deprecated);
086:
087: /**
088: * When was this PartType last changed (persistently). Returns null on newly
089: * created PartTypes.
090: */
091: Date getLastModified();
092:
093: /**
094: * Who (which user) last changed this PartType (persistently). Returns -1 on
095: * newly created PartTypes.
096: */
097: long getLastModifier();
098:
099: PartTypeDocument getXml();
100:
101: /**
102: * Changes the state of this object to match the given XML. Note that this will
103: * only change properties otherwise changeable through methods of this interface,
104: * and not internal properties like id or lastModified.
105: */
106: void setAllFromXml(PartTypeDocument.PartType partTypeXml);
107:
108: void save() throws RepositoryException;
109:
110: long getUpdateCount();
111: }
|