001: /*
002: * Copyright (c) 2001 - 2005 ivata limited.
003: * All rights reserved.
004: * -----------------------------------------------------------------------------
005: * ivata masks may be redistributed under the GNU General Public
006: * License as published by the Free Software Foundation;
007: * version 2 of the License.
008: *
009: * These programs are free software; you can redistribute them and/or
010: * modify them under the terms of the GNU General Public License
011: * as published by the Free Software Foundation; version 2 of the License.
012: *
013: * These programs are distributed in the hope that they will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
016: *
017: * See the GNU General Public License in the file LICENSE.txt for more
018: * details.
019: *
020: * If you would like a copy of the GNU General Public License write to
021: *
022: * Free Software Foundation, Inc.
023: * 59 Temple Place - Suite 330
024: * Boston, MA 02111-1307, USA.
025: *
026: *
027: * To arrange commercial support and licensing, contact ivata at
028: * http://www.ivata.com/contact.jsp
029: * -----------------------------------------------------------------------------
030: * $Log: MaskFactory.java,v $
031: * Revision 1.6 2005/10/02 14:06:32 colinmacleod
032: * Added/improved log4j logging.
033: *
034: * Revision 1.5 2005/04/11 12:27:03 colinmacleod
035: * Added preliminary support for filters.
036: * Added FieldValueConvertor factor interface
037: * to split off value convertors for reuse.
038: *
039: * Revision 1.4 2005/04/09 18:04:14 colinmacleod
040: * Changed copyright text to GPL v2 explicitly.
041: *
042: * Revision 1.3 2005/03/10 10:26:17 colinmacleod
043: * Added getClass() method with defaulted name.
044: *
045: * Revision 1.2 2005/01/06 22:13:21 colinmacleod
046: * Moved up a version number.
047: * Changed copyright notices to 2005.
048: * Updated the documentation:
049: * - started working on multiproject:site docu.
050: * - changed the logo.
051: * Added checkstyle and fixed LOADS of style issues.
052: * Added separate thirdparty subproject.
053: * Added struts (in web), util and webgui (in webtheme) from ivata op.
054: *
055: * Revision 1.1 2004/12/29 20:07:06 colinmacleod
056: * Renamed subproject masks to mask.
057: *
058: * Revision 1.3 2004/12/29 15:28:15 colinmacleod
059: * Added override for default list/input masks.
060: *
061: * Revision 1.2 2004/11/11 13:34:47 colinmacleod
062: * Added getMask.
063: *
064: * Revision 1.1.1.1 2004/05/16 20:40:31 colinmacleod
065: * Ready for 0.1 release
066: * -----------------------------------------------------------------------------
067: */
068: package com.ivata.mask;
069:
070: import java.io.IOException;
071: import java.io.InputStream;
072:
073: import com.ivata.mask.field.Field;
074: import com.ivata.mask.group.Group;
075:
076: /**
077: * An instance of this interface is used to generate all masks and groups in the
078: * project.
079: *
080: * @since ivata masks 0.1 (2004-05-14)
081: * @author Colin MacLeod
082: * <a href='mailto:colin.macleod@ivata.com'>colin.macleod@ivata.com</a>
083: * @version $Revision: 1.6 $
084: * @see DefaultMaskFactory
085: */
086: public interface MaskFactory {
087: /**
088: * <p>
089: * Get the name of the default mask/screen used for user input.
090: * </p>
091: *
092: * @return name of the default mask/screen used for user input.
093: */
094: String getDefaultInputMask();
095:
096: /**
097: * <p>
098: * Get the name of the default mask/screen used to list a base class.
099: * </p>
100: *
101: * @return name of the default mask/screen used to list a base class.
102: */
103: String getDefaultListMask();
104:
105: /**
106: * <p>
107: * Get a group definition referenced by its id.
108: * </p>
109: *
110: * @param id
111: * unique identifier of the group.
112: * @return Group definition with the id provided, or <code>null</code> if
113: * there is no such group.
114: */
115: Group getGroup(String id);
116:
117: /**
118: * <p>
119: * Get a mask, identified by its class and type.
120: * </p>
121: *
122: * @param valueObjectClass
123: * class of value object for the mask to be returned.
124: * @param type
125: * optional parameter defining multiple masks for the same value
126: * object. May be <code>null</code>.
127: * @return Mask definition with the id provided, or <code>null</code> if
128: * there is no such mask.
129: */
130: Mask getMask(Class valueObjectClass, String type);
131:
132: /**
133: * <p>
134: * Get the default mask for a value object class.
135: * </p>
136: *
137: * @param valueObjectClass
138: * class of value object for the mask to be returned.
139: * @return Mask definition with the id provided, or <code>null</code> if
140: * there is no such mask.
141: */
142: Mask getMask(Class valueObjectClass);
143:
144: /**
145: * <p>
146: * Get a mask, identified by its parent field, and class. This returns the
147: * input mask for the subclassed field.
148: * </p>
149: *
150: * @param parentField
151: * If this mask applies to a field within another mask, (known as
152: * a submask) this is the field to which it applies, otherwise
153: * use the other <code>getMask</code> method.
154: * @param valueObjectClass
155: * class of value object for the mask to be returned.
156: * @return Mask definition with the id provided, or <code>null</code> if
157: * there is no such mask.
158: */
159: Mask getMask(Field parentField, Class valueObjectClass);
160:
161: /**
162: * <p>
163: * Discover whether or not this object has been configured.
164: * </p>
165: *
166: * @return <code>true</code> if the object has been configured, otherwise
167: * <code>false</code>.
168: */
169: boolean isConfigured();
170:
171: /**
172: * <p>
173: * Get the configuration represented by the document provided.
174: * </p>
175: *
176: * @param inputStream
177: * The input stream to read the XML from.
178: * @throws IOException
179: * If there is any problem reading from the stream provided.
180: */
181: void readConfiguration(InputStream inputStream) throws IOException;
182: }
|