01: /**********************************************************************************
02: * $URL: https://source.sakaiproject.org/svn/metaobj/tags/sakai_2-4-1/metaobj-api/api/src/java/org/sakaiproject/metaobj/shared/mgt/HomeFactory.java $
03: * $Id: HomeFactory.java 20050 2007-01-02 19:37:37Z john.ellis@rsmart.com $
04: ***********************************************************************************
05: *
06: * Copyright (c) 2004, 2005, 2006 The Sakai Foundation.
07: *
08: * Licensed under the Educational Community License, Version 1.0 (the "License");
09: * you may not use this file except in compliance with the License.
10: * You may obtain a copy of the License at
11: *
12: * http://www.opensource.org/licenses/ecl1.php
13: *
14: * Unless required by applicable law or agreed to in writing, software
15: * distributed under the License is distributed on an "AS IS" BASIS,
16: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17: * See the License for the specific language governing permissions and
18: * limitations under the License.
19: *
20: **********************************************************************************/package org.sakaiproject.metaobj.shared.mgt;
21:
22: import java.util.Map;
23:
24: import org.sakaiproject.metaobj.shared.model.Id;
25:
26: /**
27: * Created by IntelliJ IDEA.
28: * User: John Ellis
29: * Date: Apr 9, 2004
30: * Time: 12:44:49 PM
31: * To change this template use File | Settings | File Templates.
32: */
33: public interface HomeFactory {
34:
35: /**
36: * Check to see if this home factory is responsible for the passed in object type
37: *
38: * @param objectType
39: * @return true if this home factory handles the specified object type
40: */
41: public boolean handlesType(String objectType);
42:
43: /**
44: * Get a home for the given object type. The returned home may support a number of interfaces
45: * depending on the features of this home. At a minimum, the home must support
46: * ReadableObjectHome interface.
47: *
48: * @param objectType
49: * @return a home suitable for reading the object, but it may support other home interfaces
50: */
51: public ReadableObjectHome getHome(String objectType);
52:
53: /**
54: * Find a home by an external id. This id should be unique and naturally occuring.
55: * This is used for matching up a home imported from another worksite or system when importing
56: * things that use Homes (ie. presentation templates, matrices, etc)
57: *
58: * @param externalId naturally occuring id (like the document root and system id of an xml document)
59: * @param worksiteId The worksite to import it into or null for global import
60: * @return the home if found or null.
61: */
62: public ReadableObjectHome findHomeByExternalId(String externalId,
63: Id worksiteId);
64:
65: /**
66: * @param worksiteId
67: * @return a map with all worksite and global homes
68: */
69: public Map getWorksiteHomes(Id worksiteId);
70:
71: public Map getWorksiteHomes(Id worksiteId, boolean includeHidden);
72:
73: /**
74: * Map of all homes. This map will map the object type as a String to the home as a ReadableObjectHome.
75: * The home may support more features. This can be determined by checking instanceof on other home interfaces
76: *
77: * @return map of object type to home
78: */
79: public Map getHomes();
80:
81: /**
82: * Map of certain homes. This map will map the object type as a String to the home as a ReadableObjectHome.
83: * The home may support more features. This can be determined by checking instanceof on other home interfaces.
84: * <p/>
85: * All the homes returned will implement the requiredHomeType interface. This method can be used to get
86: * homes that support certain features.
87: *
88: * @param requiredHomeType interface that all returned homes will be an implementation of
89: * @return map of object type to home
90: */
91: public Map getHomes(Class requiredHomeType);
92:
93: /**
94: * forces reloading of any cached homes. Allows configuration
95: * changes to occur at runtime.
96: */
97: public void reload();
98:
99: }
|