/[classpath]/classpath/javax/imageio/metadata/IIOMetadata.java
ViewVC logotype

Diff of /classpath/javax/imageio/metadata/IIOMetadata.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by mkoch, Mon Oct 4 07:22:51 2004 UTC revision 1.2 by mkoch, Mon Oct 4 09:31:36 2004 UTC
# Line 43  package javax.imageio.metadata; Line 43  package javax.imageio.metadata;
43   */   */
44  public abstract class IIOMetadata  public abstract class IIOMetadata
45  {  {
46    // FIXME: Incomplete. This class is merely present in order to allow    protected IIOMetadataController controller;
47    // compilation of the javax.imageio package.    protected IIOMetadataController defaultController;
48      protected String[] extraMetadataFormatClassNames;
49      protected String[] extraMetadataFormatNames;
50      protected String nativeMetadataFormatClassName;
51      protected String nativeMetadataFormatName;
52      protected boolean standardFormatSupported;
53    
54      /**
55       * Creates a <code>IIOMetaData</code> object.
56       */
57      protected IIOMetadata()
58      {
59        // Do nothing here.
60      }
61    
62      /**
63       * Creates a <code>IIOMetaData</code> object with the given arguments.
64       *
65       * @param standardMetadataFormatSupported
66       * @param nativeMetadataFormatName
67       * @param nativeMetadataFormatClassName
68       * @param extraMetadataFormatNames
69       * @param extraMetadataFormatClassNames
70       *
71       * @throws IllegalArgumentException if extraMetadataFormatNames has length of
72       * zero or extraMetadataFormatNames and extraMetadataFormatClassNames are
73       * neither both null, not have the same length
74       */
75      protected IIOMetadata(boolean standardMetadataFormatSupported,
76                            String nativeMetadataFormatName,
77                            String nativeMetadataFormatClassName,
78                            String[] extraMetadataFormatNames,
79                            String[] extraMetadataFormatClassNames)
80      {
81        if (extraMetadataFormatNames != null
82            && extraMetadataFormatNames.length == 0)
83          throw new IllegalArgumentException
84            ("extraMetadataFormatNames may not be empty");
85    
86        if (((extraMetadataFormatNames == null)
87             && (extraMetadataFormatClassNames != null))
88            || ((extraMetadataFormatNames != null)
89                && (extraMetadataFormatClassNames == null))
90            || ((extraMetadataFormatNames != null)
91                && (extraMetadataFormatClassNames != null)
92                && (extraMetadataFormatNames.length !=
93                    extraMetadataFormatClassNames.length)))
94          throw new IllegalArgumentException
95            ("extraMetadataFormatNames and extraMetadataFormatClassNames " +
96             "have different lengths");
97    
98        this.standardFormatSupported = standardMetadataFormatSupported;
99        this.nativeMetadataFormatName = nativeMetadataFormatName;
100        this.nativeMetadataFormatClassName = nativeMetadataFormatClassName;
101        this.extraMetadataFormatNames = extraMetadataFormatNames;
102        this.extraMetadataFormatClassNames = extraMetadataFormatClassNames;
103      }
104    
105      public boolean activateController()
106      {
107        if (! hasController())
108          return false;
109    
110        return getDefaultController().activate(this);
111      }
112    
113      public IIOMetadataController getController()
114      {
115        return controller;
116      }
117    
118      public IIOMetadataController getDefaultController()
119      {
120        return defaultController;
121      }
122    
123      public String[] getExtraMetadataFormatNames()
124      {
125        return (String[]) extraMetadataFormatNames.clone();
126      }
127    
128      public IIOMetadataFormat getMetadataFormat(String formatName)
129      {
130        if (formatName == null)
131          throw new IllegalArgumentException("formatName may not be null");
132        
133        String formatClassName = null;
134    
135        if (isStandardMetadataFormatSupported()
136            && formatName.equals(nativeMetadataFormatName))
137          formatClassName = nativeMetadataFormatClassName;
138        else
139          {
140            String[] extraFormatNames = getExtraMetadataFormatNames();
141            
142            for (int i = extraFormatNames.length - 1; i >= 0; --i)
143              if (extraFormatNames[i].equals(formatName))
144                {
145                  formatClassName = extraFormatNames[i];
146                  break;
147                }
148          }
149    
150        if (formatClassName == null)
151          throw new IllegalArgumentException("unknown format");
152    
153        IIOMetadataFormat format;
154        
155        try
156          {
157            format = (IIOMetadataFormat) Class.forName(formatClassName)
158                                              .newInstance();
159          }
160        catch (Exception e)
161          {
162            IllegalStateException ise = new IllegalStateException();
163            ise.initCause(e);
164            throw ise;
165          }
166    
167        return format;
168      }
169    
170      public String[] getMetadataFormatNames()
171      {
172        String[] formatNames = getExtraMetadataFormatNames();
173        
174        if (isStandardMetadataFormatSupported())
175          {
176            // Combine native metadata format name and extra metadata format names
177            // into one String array.
178            String[] tmp = new String[formatNames.length + 1];
179            tmp[0] = getNativeMetadataFormatName();
180    
181            for (int i = 1; i < tmp.length; ++i)
182              tmp[i] = formatNames[i - 1];
183    
184            formatNames = tmp;
185          }
186    
187        return formatNames;
188      }
189    
190      public String getNativeMetadataFormatName()
191      {
192        return nativeMetadataFormatName;
193      }
194    
195      public boolean hasController()
196      {
197        return getController() != null;
198      }
199    
200      public abstract boolean isReadOnly();
201    
202      public boolean isStandardMetadataFormatSupported()
203      {
204        return standardFormatSupported;
205      }
206    
207      public abstract void reset();
208    
209      public void setController(IIOMetadataController controller)
210      {
211        this.controller = controller;
212      }
213  }  }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26