![JAR search and dependency download from the Maven repository](/logo.png)
org.openide.loaders.UniFileLoader Maven / Gradle / Ivy
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.openide.loaders;
import java.io.IOException;
import org.openide.*;
import org.openide.filesystems.*;
import org.openide.util.io.SafeException;
/** Support class for loader handling one file at a time.
* This is used for many file types, e.g. HTML, images, etc.
* File extensions recognized by the loader may be set.
*
* @author Petr Hamernik, Jaroslav Tulach
*/
public abstract class UniFileLoader extends MultiFileLoader {
/** SUID */
static final long serialVersionUID=-6190649471408985837L;
/** name of property with extensions */
public static final String PROP_EXTENSIONS = "extensions"; // NOI18N
/** Constructor.
* @param representationClass class that is produced by this loader
*/
protected UniFileLoader(Class representationClass) {
super (representationClass);
}
/** Constructor.
* @param representationClassName the fully qualified name of the
* representation class.
*
* @since 1.10
*/
protected UniFileLoader (String representationClassName) {
super (representationClassName);
}
/** Get the primary file.
* By default, only accepts files, not folders.
* @param fo the file to find the primary file for
*
* @return the primary file, or null
if its extension is not {@link #getExtensions recognized}
*/
protected FileObject findPrimaryFile (FileObject fo) {
// never recognize folders
if (fo.isFolder()) return null;
return getExtensions().isRegistered(fo) ? fo : null;
}
/* Creates the right data object for given primary file.
* It is guaranteed that the provided file is realy primary file
* returned from the method findPrimaryFile.
*
* @param primaryFile the primary file
* @return the data object for this file
* @exception DataObjectExistsException if the primary file already has data object
*/
protected abstract MultiDataObject createMultiObject (FileObject primaryFile)
throws DataObjectExistsException, java.io.IOException;
/* Creates the right primary entry for given primary file.
*
* @param obj requesting object
* @param primaryFile primary file recognized by this loader
* @return primary entry for that file
*/
protected MultiDataObject.Entry createPrimaryEntry (MultiDataObject obj, FileObject primaryFile) {
return new FileEntry (obj, primaryFile);
}
/** Do not create a seconday entry.
*
* @param obj ignored
* @param secondaryFile ignored
* @return never returns
* @exception UnsupportedOperationException because this loader supports only a primary file object
*/
protected MultiDataObject.Entry createSecondaryEntry (MultiDataObject obj, FileObject secondaryFile) {
// Debug messages for #17014. Please remove, when the bug is fixed.
StringBuffer buf = new StringBuffer("Error in data system. Please reopen the bug #17014 with the following message: "); //NOI18N
buf.append("\n DataLoader:"); //NOI18N
buf.append(getClass().getName());
buf.append("\n DataObject:"); //NOI18N
buf.append(obj);
buf.append("\n PrimaryEntry:"); //NOI18N
buf.append(obj.getPrimaryEntry());
buf.append("\n PrimaryFile:"); //NOI18N
buf.append(obj.getPrimaryFile());
buf.append("\n SecondaryFile:"); //NOI18N
buf.append(secondaryFile);
buf.append("\n");
throw new UnsupportedOperationException (buf.toString()); //NOI18N
}
/** Called when there is a collision between a data object that
* this loader tries to create and already existing one.
*
* @param obj existing data object
* @param file the original file that has been recognized by this loader
* as bellonging to obj data object
* @return null
*/
final DataObject checkCollision (DataObject obj, FileObject file) {
return null;
}
/** Does nothing because this loader works only with objects
* with one file => primary file so it is not necessary to search
* for anything else.
*
* @param obj the object to test
*/
final void checkConsistency (MultiDataObject obj) {
}
/** Does nothing because this loader works only with objects
* with one file => primary file so it is not necessary to search
* for anything else.
*
* @param obj the object to test
*/
final void checkFiles (MultiDataObject obj) {
}
/** Set the extension list for this data loader.
* @param ext new list of extensions
*/
public void setExtensions(ExtensionList ext) {
putProperty (PROP_EXTENSIONS, ext, true);
}
/** Get the extension list for this data loader.
* @return list of extensions
*/
public ExtensionList getExtensions() {
ExtensionList l = (ExtensionList)getProperty (PROP_EXTENSIONS);
if (l == null) {
l = new ExtensionList ();
putProperty (PROP_EXTENSIONS, l, false);
}
return l;
}
/** Writes extensions to the stream.
* @param oo ignored
*/
public void writeExternal (java.io.ObjectOutput oo) throws IOException {
super.writeExternal (oo);
oo.writeObject (getProperty (PROP_EXTENSIONS));
}
/** Reads nothing from the stream.
* @param oi ignored
*/
public void readExternal (java.io.ObjectInput oi)
throws IOException, ClassNotFoundException {
SafeException se;
try {
super.readExternal (oi);
se = null;
} catch (SafeException se2) {
se = se2;
}
setExtensions ((ExtensionList)oi.readObject ());
if (se != null) throw se;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy