Package weka.core.converters

# Class AbstractLoader

java.lang.Object
weka.core.converters.AbstractLoader

All Implemented Interfaces:
  `Serializable`, `Loader`, `RevisionHandler`

Direct Known Subclasses:
  `AbstractFileLoader`, `DatabaseLoader`, `TextDirectoryLoader`

public abstract class AbstractLoader extends Object implements Loader
Abstract class gives default implementation of setSource methods. All other methods must be overridden.

Version:
  $Revision: 7454 $
Author:
  Richard Kirkby (rkirkby@cs.waikato.ac.nz)
See Also:
  - Serialized Form

## Field Summary

### Fields inherited from interface weka.core.converters.Loader

`BATCH, INCREMENTAL, NONE`

## Constructor Summary

Constructors
Constructor
Description
`AbstractLoader()`

## Method Summary

Modifier and Type
Method
Description
`abstract Instances`
`getDataSet()`
Return the full data set.
`abstract Instance`
`getNextInstance(Instances structure)`
Read the data set incrementally---get the next instance in the data set or returns null if there are no more instances to get.
`abstract Instances`
`getStructure()`
Determines and returns (if possible) the structure (internally the header) of the data set as an empty set of instances.
`void`
`reset()`
Default implementation sets retrieval mode to NONE
`void`
`setRetrieval(int mode)`
Sets the retrieval mode.
`void`
`setSource(File file)`
Default implementation throws an IOException.
`void`
`setSource(InputStream input)`
Default implementation throws an IOException.

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface weka.core.RevisionHandler

`getRevision`

## Constructor Details

### AbstractLoader

public AbstractLoader()

## Method Details

### setRetrieval

public void setRetrieval(int mode)
Sets the retrieval mode.

Specified by:
  `setRetrieval` in interface `Loader`
Parameters:
  `mode` - the retrieval mode

### setSource

public void setSource(File file) throws IOException
Default implementation throws an IOException.

Specified by:
  `setSource` in interface `Loader`
Parameters:
  `file` - the File
Throws:
  `IOException` - always

### reset

public void reset() throws Exception
Default implementation sets retrieval mode to NONE

Specified by:
  `reset` in interface `Loader`
Throws:
  `Exception` - if Loader can't be reset for some reason.

### setSource

public void setSource(InputStream input) throws IOException
Default implementation throws an IOException.

Specified by:
  `setSource` in interface `Loader`
Parameters:
  `input` - the input stream
Throws:
  `IOException` - always

### getStructure

public abstract Instances getStructure() throws IOException
Description copied from interface: `Loader`
Determines and returns (if possible) the structure (internally the header) of the data set as an empty set of instances.

Specified by:
  `getStructure` in interface `Loader`
Returns:
  the structure of the data set as an empty set of Instances
Throws:
  `IOException` - if there is no source or parsing fails

      <jml>
          public_normal_behavior
            requires: model_sourceSupplied == true
                      invalid input: '&'invalid input: '&' model_structureDetermined == false
                      invalid input: '&'invalid input: '&' (* successful parse *);
            modifiable: model_structureDetermined;
            ensures: \result != null
                     invalid input: '&'invalid input: '&' \result.numInstances() == 0
                     invalid input: '&'invalid input: '&' model_structureDetermined == true;
        also
          public_exceptional_behavior
            requires: model_sourceSupplied == false
                      || (* unsuccessful parse *);
            signals: (IOException);
       </jml>

### getDataSet

public abstract Instances getDataSet() throws IOException
Description copied from interface: `Loader`
Return the full data set. If the structure hasn't yet been determined by a call to getStructure then the method should do so before processing the rest of the data set.

Specified by:
  `getDataSet` in interface `Loader`
Returns:
  the full data set as an Instances object
Throws:
  `IOException` - if there is an error during parsing or if getNextInstance has been called on this source (either incremental or batch loading can be used, not both).

      <jml>
          public_normal_behavior
            requires: model_sourceSupplied == true
                      invalid input: '&'invalid input: '&' (* successful parse *);
            modifiable: model_structureDetermined;
            ensures: \result != null
                     invalid input: '&'invalid input: '&' \result.numInstances() >= 0
                     invalid input: '&'invalid input: '&' model_structureDetermined == true;
        also
          public_exceptional_behavior
            requires: model_sourceSupplied == false
                      || (* unsuccessful parse *);
            signals: (IOException);
       </jml>

### getNextInstance

public abstract Instance getNextInstance(Instances structure) throws IOException
Description copied from interface: `Loader`
Read the data set incrementally---get the next instance in the data set or returns null if there are no more instances to get. If the structure hasn't yet been determined by a call to getStructure then method should do so before returning the next instance in the data set. If it is not possible to read the data set incrementally (ie. in cases where the data set structure cannot be fully established before all instances have been seen) then an exception should be thrown.

Specified by:
  `getNextInstance` in interface `Loader`
Parameters:
  `structure` - the dataset header information, will get updated in case of string or relational attributes
Returns:
  the next instance in the data set as an Instance object or null if there are no more instances to be read
Throws:
  `IOException` - if there is an error during parsing or if getDataSet has been called on this source (either incremental or batch loading can be used, not both).