java.io.IOException: failed to load image contents
at javax.swing.ImageIcon.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.access$100(Unknown Source)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
at java.io.ObjectOutputStream.writeFields(Unknown Source)
at java.awt.Container.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.access$100(Unknown Source)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
at java.io.ObjectOutputStream.writeFields(Unknown Source)
at java.awt.Container.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.access$100(Unknown Source)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
at java.io.ObjectOutputStream.writeFields(Unknown Source)
at java.awt.Container.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.beans.PropertyChangeSupport.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
......
PixelGrabber pg = new PixelGrabber(image, 0, 0, w, h, pixels, 0, w);
pg.grabPixels();
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
throw new IOException("failed to load image contents");
可能是什么问题呢?
at javax.swing.ImageIcon.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor42.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.access$100(Unknown Source)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
at java.io.ObjectOutputStream.writeFields(Unknown Source)
at java.awt.Container.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.access$100(Unknown Source)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
at java.io.ObjectOutputStream.writeFields(Unknown Source)
at java.awt.Container.writeObject(Unknown Source)
at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeArray(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.access$100(Unknown Source)
at java.io.ObjectOutputStream$PutFieldImpl.writeFields(Unknown Source)
at java.io.ObjectOutputStream.writeFields(Unknown Source)
at java.awt.Container.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at java.beans.PropertyChangeSupport.writeObject(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
......
PixelGrabber pg = new PixelGrabber(image, 0, 0, w, h, pixels, 0, w);
pg.grabPixels();
if ((pg.getStatus() & ImageObserver.ABORT) != 0) {
throw new IOException("failed to load image contents");
可能是什么问题呢?
新年快乐,接分了
////////////传入的toStore的类型为自定义的类型,这个类型继承自JPanel,实现了Serializable ByteArrayOutputStream ostream = new ByteArrayOutputStream();
OutputStream os = ostream;
ObjectOutputStream p;
if (!compress)
p = new ObjectOutputStream(new BufferedOutputStream(os));
else
p = new ObjectOutputStream(new BufferedOutputStream(new GZIPOutputStream(os)));
p.writeObject(toStore); ////////////这抛出异常了!
p.flush();
p.close(); // used to be ostream.close() !
m_storedObjectArray = ostream.toByteArray(); m_isCompressed = compress;
}
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.io.Serializable;
import java.awt.*;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.IOException;public class BeanVisual extends JPanel implements Serializable { public static final String ICON_PATH="weka/gui/beans/icons/"; public static final int NORTH_CONNECTOR = 0;
public static final int SOUTH_CONNECTOR = 1;
public static final int EAST_CONNECTOR = 2;
public static final int WEST_CONNECTOR = 3;
protected String m_iconPath; protected String m_animatedIconPath; protected transient ImageIcon m_icon;
protected transient ImageIcon m_animatedIcon; protected String m_visualName; protected JLabel m_visualLabel;
private boolean m_stationary = true; private PropertyChangeSupport m_pcs = new PropertyChangeSupport(this);
private boolean m_displayConnectors = false;
private Color m_connectorColor = Color.blue; private String m_beanName;
public BeanVisual(String visualName, String iconPath,
String animatedIconPath) { loadIcons(iconPath, animatedIconPath);
m_visualName = visualName;
m_visualLabel = new JLabel(m_icon); setLayout(new BorderLayout());
add(m_visualLabel, BorderLayout.CENTER);
Dimension d = m_visualLabel.getPreferredSize();
Dimension d2 = new Dimension((int)d.getWidth() + 10,
(int)d.getHeight() + 10);
setMinimumSize(d2);
setPreferredSize(d2);
setMaximumSize(d2); m_beanName=m_visualName;
} public void scale(int factor) {
if (m_icon != null) {
removeAll();
Image pic = m_icon.getImage();
int width = m_icon.getIconWidth();
int height = m_icon.getIconHeight();
int reduction = width / factor;
width -= reduction;
height -= reduction;
pic = pic.getScaledInstance(width, height, Image.SCALE_SMOOTH);
m_icon = new ImageIcon(pic);
m_visualLabel = new JLabel(m_icon);
add(m_visualLabel, BorderLayout.CENTER);
Dimension d = m_visualLabel.getPreferredSize();
Dimension d2 = new Dimension((int)d.getWidth() + 10,
(int)d.getHeight() + 10);
setMinimumSize(d2);
setPreferredSize(d2);
setMaximumSize(d2);
}
} public boolean loadIcons(String iconPath, String animatedIconPath) {
boolean success = true;
java.net.URL imageURL = ClassLoader.getSystemResource(iconPath);
if (imageURL == null) {
} else {
Image pic = Toolkit.getDefaultToolkit().
getImage(imageURL); m_icon = new ImageIcon(pic);
if (m_visualLabel != null) {
m_visualLabel.setIcon(m_icon);
}
}
imageURL = ClassLoader.getSystemResource(animatedIconPath);
if (imageURL == null) {
success = false;
} else {
Image pic2 = Toolkit.getDefaultToolkit().
getImage(imageURL);
m_animatedIcon = new ImageIcon(pic2);
}
m_iconPath = iconPath;
m_animatedIconPath = animatedIconPath;
return success;
} public void setText(String text) {
m_visualName = text;
// m_textLabel.setText(m_visualName);
m_pcs.firePropertyChange("label",null,null);
} public String getText() {
return m_visualName;
} public void setStatic() {
m_visualLabel.setIcon(m_icon);
} public void setAnimated() {
m_visualLabel.setIcon(m_animatedIcon);
} public Point getClosestConnectorPoint(Point pt) {
int sourceX = getParent().getX();
int sourceY = getParent().getY();
int sourceWidth = getWidth();
int sourceHeight = getHeight();
int sourceMidX = sourceX + (sourceWidth / 2);
int sourceMidY = sourceY + (sourceHeight / 2);
int x = (int)pt.getX();
int y = (int)pt.getY();
Point closest = new Point();
int cx = (Math.abs(x - sourceMidX) < Math.abs(y - sourceMidY)) ?
sourceMidX :
((x < sourceMidX) ? sourceX : sourceX + sourceWidth);
int cy = (Math.abs(y - sourceMidY) < Math.abs(x - sourceMidX)) ?
sourceMidY :
((y < sourceMidY) ? sourceY : sourceY + sourceHeight) ;
closest.setLocation(cx, cy);
return closest;
} public Point getConnectorPoint(int compassPoint) {
int sourceX = getParent().getX();
int sourceY = getParent().getY();
int sourceWidth = getWidth();
int sourceHeight = getHeight();
int sourceMidX = sourceX + (sourceWidth / 2);
int sourceMidY = sourceY + (sourceHeight / 2); switch (compassPoint) {
case NORTH_CONNECTOR : return new Point(sourceMidX, sourceY);
case SOUTH_CONNECTOR : return new Point(sourceMidX, sourceY+sourceHeight);
case WEST_CONNECTOR : return new Point(sourceX, sourceMidY);
case EAST_CONNECTOR : return new Point(sourceX+sourceWidth, sourceMidY);
default : System.err.println("Unrecognised connectorPoint (BeanVisual)");
}
return new Point(sourceX, sourceY);
} public ImageIcon getStaticIcon() {
return m_icon;
} public ImageIcon getAnimatedIcon() {
return m_animatedIcon;
} public String getIconPath() {
return m_iconPath;
} public String getAnimatedIconPath() {
return m_animatedIconPath;
} public void setDisplayConnectors(boolean dc) {
// m_visualHolder.setDisplayConnectors(dc);
m_displayConnectors = dc;
m_connectorColor = Color.blue;
repaint();
} public void setDisplayConnectors(boolean dc,
Color c) {
setDisplayConnectors(dc);
m_connectorColor = c;
} public void addPropertyChangeListener(PropertyChangeListener pcl) {
m_pcs.addPropertyChangeListener(pcl);
} public void removePropertyChangeListener(PropertyChangeListener pcl) {
m_pcs.removePropertyChangeListener(pcl);
} public void paintComponent(Graphics gx) {
super.paintComponent(gx);
if (m_displayConnectors) {
gx.setColor(m_connectorColor);
int midx = (int)(this.getWidth() / 2.0);
int midy = (int)(this.getHeight() / 2.0);
gx.fillOval(midx-2, 0, 5, 5);
gx.fillOval(midx-2, this.getHeight()-5, 5, 5);
gx.fillOval(0, midy-2, 5, 5);
gx.fillOval(this.getWidth()-5, midy-2, 5, 5);
}
} private void readObject(ObjectInputStream ois)
throws IOException, ClassNotFoundException {
try {
ois.defaultReadObject();
remove(m_visualLabel);
m_visualLabel = new JLabel(m_icon);
loadIcons(m_iconPath, m_animatedIconPath);
add(m_visualLabel, BorderLayout.CENTER);
Dimension d = m_visualLabel.getPreferredSize();
Dimension d2 = new Dimension((int)d.getWidth() + 10,
(int)d.getHeight() + 10);
setMinimumSize(d2);
setPreferredSize(d2);
setMaximumSize(d2);
} catch (Exception ex) {
ex.printStackTrace();
}
}}
import java.util.zip.*;public class SerializedObject implements Serializable { private byte[] m_storedObjectArray; private boolean m_isCompressed; public SerializedObject(Object toStore) throws Exception { this(toStore, false);
} public SerializedObject(Object toStore, boolean compress) throws Exception { ByteArrayOutputStream ostream = new ByteArrayOutputStream();
OutputStream os = ostream;
ObjectOutputStream p;
if (!compress)
p = new ObjectOutputStream(new BufferedOutputStream(os));
else
p = new ObjectOutputStream(new BufferedOutputStream(new GZIPOutputStream(os)));
p.writeObject(toStore);
p.flush();
p.close(); // used to be ostream.close() !
m_storedObjectArray = ostream.toByteArray(); m_isCompressed = compress;
} public final boolean equals(Object compareTo) { if (compareTo == null) return false;
if (!compareTo.getClass().equals(this.getClass())) return false;
byte[] compareArray = ((SerializedObject)compareTo).m_storedObjectArray;
if (compareArray.length != m_storedObjectArray.length) return false;
for (int i=0; i<compareArray.length; i++) {
if (compareArray[i] != m_storedObjectArray[i]) return false;
}
return true;
} public int hashCode() { return m_storedObjectArray.length;
} public Object getObject() { try {
ByteArrayInputStream istream = new ByteArrayInputStream(m_storedObjectArray);
ObjectInputStream p;
if (!m_isCompressed)
p = new ObjectInputStream(new BufferedInputStream(istream));
else
p = new ObjectInputStream(new BufferedInputStream(new GZIPInputStream(istream)));
Object toReturn = p.readObject();
istream.close();
return toReturn;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
package weka.gui.beans;import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.InputEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.*;
import java.io.Serializable;
import java.io.Reader;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;
import java.util.Vector;
import java.util.ArrayList;
import java.util.Stack;
import java.util.Enumeration;
import java.io.IOException;
import java.beans.beancontext.*;
import javax.swing.JButton;import weka.core.Instance;
import weka.core.Instances;
import weka.core.SerializedObject;
import weka.core.converters.*;public class Loader extends AbstractDataSource implements UserRequestAcceptor,
WekaWrapper, EventConstraints, Recoverable { private transient Instances m_dataSet; private transient Instances m_dataFormat; protected String m_globalInfo; private LoadThread m_ioThread; private weka.core.converters.Loader m_Loader = new ArffLoader(); private InstanceEvent m_ie = new InstanceEvent(this); private int m_instanceEventTargets = 0; private int backup_instanceEventTargets = 0; private int m_dataSetEventTargets = 0; private int backup_dataSetEventTargets = 0; private ArrayList listenerQuene = new ArrayList();
private ArrayList loaderQuene = new ArrayList(); private Stack listenerStack = new Stack();
private Stack loaderStack = new Stack(); private ArrayList visualQueue = new ArrayList();
private Stack visualStack = new Stack();
private BeanVisual backup_visual; private weka.core.converters.Loader backup_loader;
int[] instanceEventArray = new int[30]; int[] dataSetEventArray = new int[30]; int cursor = 19; int deep = -1; boolean layout_update = false; boolean downwards = true; boolean branch = false; private String f; private boolean m_dbSet = false; private class LoadThread extends Thread {
private DataSource m_DP; public LoadThread(DataSource dp) {
m_DP = dp;
} public void run() {
try {
m_visual.setAnimated();
boolean instanceGeneration = true;
if (m_dataSetEventTargets > 0) {
instanceGeneration = false;
} if (instanceGeneration) {
Instance nextInstance = null;
Instances structure = null;
try {
m_Loader.reset();
System.err.println("NOTIFYING STRUCTURE AVAIL");
structure = m_Loader.getStructure();
notifyStructureAvailable(structure);
} catch (IOException e) {
e.printStackTrace();
}
try {
nextInstance = m_Loader.getNextInstance();
} catch (IOException e) {
e.printStackTrace();
}
int z = 0;
while (nextInstance != null) {
nextInstance.setDataset(structure);
m_ie.setStatus(InstanceEvent.INSTANCE_AVAILABLE);
m_ie.setInstance(nextInstance);
nextInstance = m_Loader.getNextInstance();
if (nextInstance == null) {
m_ie.setStatus(InstanceEvent.BATCH_FINISHED);
}
notifyInstanceLoaded(m_ie);
z++;
}
m_visual.setStatic();
} else {
m_dataSet = m_Loader.getDataSet();
m_visual.setStatic();
m_visual.setText(m_dataSet.relationName());
notifyDataSetLoaded(new DataSetEvent(m_DP, m_dataSet));
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
m_ioThread = null;
m_visual.setStatic();
}
}
} public String globalInfo() {
return m_globalInfo;
} public Loader() {
super();
setLoader(m_Loader);
appearanceFinal();
} public void setDB(boolean flag) { m_dbSet = flag;
} protected void appearanceFinal() {
removeAll();
setLayout(new BorderLayout());
JButton goButton = new JButton("Start...");
add(goButton, BorderLayout.CENTER);
goButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
startLoading();
}
});
} protected void appearanceDesign() {
removeAll();
setLayout(new BorderLayout());
add(m_visual, BorderLayout.CENTER);
} public void setBeanContext(BeanContext bc) {
super.setBeanContext(bc);
if (m_design) {
appearanceDesign();
} else {
appearanceFinal();
}
}
boolean loadImages = true;
if (loader.getClass().getName()
.compareTo(m_Loader.getClass().getName()) == 0) {
loadImages = false;
}
m_Loader = loader;
String loaderName = loader.getClass().toString();
loaderName = loaderName.substring(loaderName.lastIndexOf('.') + 1,
loaderName.length());
if (loadImages) {
if (m_Loader instanceof Visible) {
m_visual = ((Visible) m_Loader).getVisual();
} else { if (!m_visual.loadIcons(BeanVisual.ICON_PATH + loaderName
+ ".gif", BeanVisual.ICON_PATH + loaderName
+ "_animated.gif")) {
useDefaultVisual();
}
}
}
m_visual.setText(loaderName); if (!(loader instanceof DatabaseLoader)) {
try {
m_dataFormat = m_Loader.getStructure();
System.err
.println("Notifying listeners of instance structure avail. (Loader).");
notifyStructureAvailable(m_dataFormat);
} catch (Exception ex) {
}
} m_globalInfo = KnowledgeFlowApp.getGlobalInfo(m_Loader);
} public weka.core.converters.Loader getLoader() {
return m_Loader;
} public void setWrappedAlgorithm(Object algorithm) { if (!(algorithm instanceof weka.core.converters.Loader)) {
throw new IllegalArgumentException(algorithm.getClass()
+ " : incorrect " + "type of algorithm (Loader)");
}
setLoader((weka.core.converters.Loader) algorithm);
} public Object getWrappedAlgorithm() {
return getLoader();
} protected void notifyStructureAvailable(Instances structure) {
if (m_dataSetEventTargets > 0 && structure != null) {
DataSetEvent dse = new DataSetEvent(this, structure);
notifyDataSetLoaded(dse);
} else if (m_instanceEventTargets > 0 && structure != null) {
m_ie.setStructure(structure);
notifyInstanceLoaded(m_ie);
}
} protected void notifyDataSetLoaded(DataSetEvent e) {
Vector l;
synchronized (this) {
l = (Vector) m_listeners.clone();
} if (l.size() > 0) {
for (int i = 0; i < l.size(); i++) {
((DataSourceListener) l.elementAt(i)).acceptDataSet(e);
}
m_dataSet = null;
}
} protected void notifyInstanceLoaded(InstanceEvent e) {
Vector l;
synchronized (this) {
l = (Vector) m_listeners.clone();
} if (l.size() > 0) {
for (int i = 0; i < l.size(); i++) {
((InstanceListener) l.elementAt(i)).acceptInstance(e);
}
m_dataSet = null;
}
} public void startLoading() {
if (m_ioThread == null) {
// m_visual.setText(m_dataSetFile.getName());
m_ioThread = new LoadThread(Loader.this);
m_ioThread.setPriority(Thread.MIN_PRIORITY);
m_ioThread.start();
} else {
m_ioThread = null;
}
} public Enumeration enumerateRequests() {
Vector newVector = new Vector(0);
boolean ok = true;
if (m_ioThread == null) {
if (m_Loader instanceof FileSourcedConverter) {
if (!((FileSourcedConverter) m_Loader).retrieveFile().isFile()) {
ok = false;
}
}
String entry = "Start loading";
if (!ok) {
entry = "$" + entry;
}
newVector.addElement(entry);
}
return newVector.elements();
} public void performRequest(String request) {
if (request.compareTo("Start loading") == 0) {
startLoading();
} else {
throw new IllegalArgumentException(request
+ " not supported (Loader)");
}
} public boolean eventGeneratable(String eventName) {
if (eventName.compareTo("instance") == 0) {
if (!(m_Loader instanceof weka.core.converters.IncrementalConverter)) {
return false;
}
if (m_dataSetEventTargets > 0) {
return false;
}
} if (eventName.compareTo("dataSet") == 0) {
if (!(m_Loader instanceof weka.core.converters.BatchConverter)) {
return false;
}
if (m_instanceEventTargets > 0) {
return false;
}
}
return true;
} public synchronized void addDataSourceListener(DataSourceListener dsl) {
super.addDataSourceListener(dsl);
m_dataSetEventTargets++;
// pass on any current instance format
try {
if (m_dbSet) {
m_dataFormat = m_Loader.getStructure();
m_dbSet = false;
}
} catch (Exception ex) {
}
notifyStructureAvailable(m_dataFormat);
} public synchronized void removeDataSourceListener(DataSourceListener dsl) {
super.removeDataSourceListener(dsl);
m_dataSetEventTargets--;
} public synchronized void addInstanceListener(InstanceListener dsl) {
super.addInstanceListener(dsl);
m_instanceEventTargets++;
try {
if (m_dbSet) {
m_dataFormat = m_Loader.getStructure();
m_dbSet = false;
}
} catch (Exception ex) {
}
// pass on any current instance format
notifyStructureAvailable(m_dataFormat);
} public synchronized void removeInstanceListener(InstanceListener dsl) {
super.removeInstanceListener(dsl);
m_instanceEventTargets--;
}
if (branch) {
while (!listenerStack.isEmpty()) {
listenerStack.pop();
}
while (!loaderStack.isEmpty()){
loaderStack.pop();
}
while (!visualStack.isEmpty()){
visualStack.pop();
}
branch = false;
}
backup_listeners = (Vector) m_listeners.clone();
try{
SerializedObject so = new SerializedObject(m_Loader);
backup_loader = (weka.core.converters.Loader)so.getObject();
so = new SerializedObject(m_visual);
backup_visual =(BeanVisual)so.getObject(); /************An exception thrown************/
}
catch(Exception ex){
ex.printStackTrace();
System.err.print("serialize failed!");
}
if (deep < 20) {
listenerQuene.add(backup_listeners);
loaderQuene.add(backup_loader); visualQueue.add(backup_visual);
deep++;
instanceEventArray[deep] = m_instanceEventTargets;
dataSetEventArray[deep] = m_dataSetEventTargets; } else {
listenerQuene.remove(0);
listenerQuene.add(backup_listeners);
loaderQuene.remove(0);
loaderQuene.add(backup_loader); visualQueue.remove(0);
visualQueue.add(backup_visual);
for (int index = 0; index < dataSetEventArray.length - 1; index++) {
instanceEventArray[index] = instanceEventArray[index + 1];
dataSetEventArray[index] = dataSetEventArray[index + 1];
}
instanceEventArray[deep] = m_instanceEventTargets;
dataSetEventArray[deep] = m_dataSetEventTargets;
}
layout_update = true;
cursor = deep; } public void RestoreListeners() {
branch = true;
backup_listeners = (Vector) listenerQuene.get(deep);
listenerStack.push((Vector) (m_listeners.clone()));
backup_loader = (weka.core.converters.Loader)loaderQuene.get(deep);
loaderStack.push(backup_loader); backup_visual = (BeanVisual) visualQueue.get(deep);
visualStack.push(backup_visual);
if (deep > 0) {
listenerQuene.remove(deep);
loaderQuene.remove(deep); visualQueue.remove(deep);
deep--;
}
try{
m_listeners = backup_listeners;
setLoaderIgnoreVisualName(backup_loader);
m_Loader.setSource(((FileSourcedConverter)m_Loader).retrieveFile()); setVisual(backup_visual);
}
catch(Exception ex){
System.err.print("setsource failed!");
} if (layout_update) {
instanceEventArray[deep + 2] = m_instanceEventTargets;
dataSetEventArray[deep + 2] = m_dataSetEventTargets;
layout_update = false;
}
if (!downwards) { cursor--;
m_instanceEventTargets = instanceEventArray[cursor];
m_dataSetEventTargets = dataSetEventArray[cursor];
cursor--;
} else { if (cursor >= 0) { m_instanceEventTargets = instanceEventArray[cursor];
m_dataSetEventTargets = dataSetEventArray[cursor];
cursor--;
}
}
downwards = true;
} public void ForwardRecovery() {
if (branch) {
Stack tempStack = (Stack) listenerStack.clone();
tempStack.pop();
listenerQuene.add(m_listeners.clone());
try {
SerializedObject so = new SerializedObject(m_Loader);
loaderQuene.add(so.getObject());
so = new SerializedObject(m_visual);
visualQueue.add(so.getObject()); } catch (Exception ex) {
System.err.print("forward serialize failed!");
}
deep++;
try {
if (!tempStack.isEmpty()) {
m_listeners = (Vector) (listenerStack.pop());
setLoaderIgnoreVisualName((weka.core.converters.Loader) loaderStack.pop());
m_Loader.setSource(((FileSourcedConverter) m_Loader)
.retrieveFile()); setVisual((BeanVisual)visualStack.pop()); } else {
m_listeners = (Vector) (listenerStack.peek());
setLoaderIgnoreVisualName((weka.core.converters.Loader) loaderStack.peek());
m_Loader.setSource(((FileSourcedConverter) m_Loader)
.retrieveFile());
setVisual((BeanVisual)visualStack.peek());
}
} catch (Exception ex) {
System.err.print("setSource failed!");
}
if (downwards) {
cursor += 2;
m_instanceEventTargets = instanceEventArray[cursor];
m_dataSetEventTargets = dataSetEventArray[cursor];
cursor--; } else {
if (cursor <= 20) {
cursor++;
m_instanceEventTargets = instanceEventArray[cursor];
m_dataSetEventTargets = dataSetEventArray[cursor]; }
}
}
}
public void setFilePath(String file){
f = file;
}
public String getFilePath(){
return f;
} public static void main(String[] args) {
try {
final javax.swing.JFrame jf = new javax.swing.JFrame();
jf.getContentPane().setLayout(new java.awt.BorderLayout()); final Loader tv = new Loader(); jf.getContentPane().add(tv, java.awt.BorderLayout.CENTER);
jf.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
jf.dispose();
System.exit(0);
}
});
jf.setSize(800, 600);
jf.setVisible(true);
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void setLoaderIgnoreVisualName(weka.core.converters.Loader loader) {
boolean loadImages = true;
if (loader.getClass().getName()
.compareTo(m_Loader.getClass().getName()) == 0) {
loadImages = false;
}
m_Loader = loader;
String loaderName = loader.getClass().toString();
loaderName = loaderName.substring(loaderName.lastIndexOf('.') + 1,
loaderName.length());
if (loadImages) {
if (m_Loader instanceof Visible) {
m_visual = ((Visible) m_Loader).getVisual();
} else { if (!m_visual.loadIcons(BeanVisual.ICON_PATH + loaderName
+ ".gif", BeanVisual.ICON_PATH + loaderName
+ "_animated.gif")) {
useDefaultVisual();
}
}
} if (!(loader instanceof DatabaseLoader)) {
try {
m_dataFormat = m_Loader.getStructure();
System.err
.println("Notifying listeners of instance structure avail. (Loader).");
notifyStructureAvailable(m_dataFormat);
} catch (Exception ex) {
}
} m_globalInfo = KnowledgeFlowApp.getGlobalInfo(m_Loader);
}}