01: /*
02: * Copyright 2005-2007 The Kuali Foundation.
03: *
04: * Licensed under the Educational Community License, Version 1.0 (the "License");
05: * you may not use this file except in compliance with the License.
06: * You may obtain a copy of the License at
07: *
08: * http://www.opensource.org/licenses/ecl1.php
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS,
12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13: * See the License for the specific language governing permissions and
14: * limitations under the License.
15: */
16: package org.kuali.core.service;
17:
18: import org.kuali.core.bo.DocumentType;
19: import org.kuali.core.exceptions.UnknownDocumentTypeException;
20:
21: /**
22: * This interface defines methods that a DocumentType service must provide. Performs lookup/translation between documentType name
23: * (used within kuali to specify an implementer of the Document interface), documentType class (an actual Class which implements the
24: * Document interface), and documentTypeId (used by workflow to specify documentType).
25: *
26: *
27: */
28: public interface DocumentTypeService {
29: /**
30: * Given a documentTypeName, returns the associated implementation Class.
31: *
32: * @param documentTypeName
33: * @return Class implementing the Document interface
34: * @throws IllegalArgumentException if the given documentTypeName is null
35: * @throws UnknownDocumentTypeException if the given documentTypeName isn't mapped to a documentType
36: */
37: public Class getClassByName(String documentTypeName);
38:
39: /**
40: * Given a documentClass, returns the associated documentTypeName.
41: *
42: * @param documentClass
43: * @return documentTypeName
44: * @throws IllegalArgumentException if the given documentClass is null
45: * @throws UnknownDocumentTypeException if the given documnentClass isn't mapped to a documentType
46: */
47: public String getDocumentTypeNameByClass(Class documentClass);
48:
49: /**
50: * Given a documentClass, returns the associated documentTypeCode listed in its data dictionary file. Note that this will not
51: * work properly for maintenance documents, because the data dictionary maps all the maintenance document types to the same
52: * MaintenanceDocumentBase class (which is not really a base class because it has no subclasses).
53: *
54: * @param documentClass
55: * @return
56: * @throws IllegalArgumentException if the given documentClass is null
57: * @throws UnknownDocumentTypeException if the given documentClass isn't mapped to a documentTypeCode
58: */
59: public String getDocumentTypeCodeByClass(Class documentClass);
60:
61: /**
62: * Given a documentTypeCode, returns the associated DocumentType from the database.
63: *
64: * @param documentTypeCode
65: * @return DocumentType
66: * @throws UnknownDocumentTypeException if the given documentTypeCode isn't mapped to a DocumentType
67: */
68: public DocumentType getDocumentTypeByCode(String documentTypeCode);
69:
70: /**
71: * Given a documentTypeName, returns from the database the DocumentType which is associated with that documentTypeName in the
72: * data dictionary via its documentTypeCode.
73: *
74: * @param documentTypeName
75: * @return DocumentType
76: * @throws UnknownDocumentTypeException if the given documentTypeCode isn't mapped to a DocumentType
77: */
78: public DocumentType getDocumentTypeByName(String documentTypeName);
79: }
|