summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java')
-rw-r--r--src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java51
1 files changed, 23 insertions, 28 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java b/src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java
index d42f1eb8..9decd34b 100644
--- a/src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java
+++ b/src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.datasource;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2011
+ Copyright (C) 2012
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -28,14 +28,13 @@ import java.util.List;
import de.lmu.ifi.dbs.elki.datasource.bundle.MultipleObjectsBundle;
import de.lmu.ifi.dbs.elki.datasource.filter.ObjectFilter;
-import de.lmu.ifi.dbs.elki.datasource.parser.DoubleVectorLabelParser;
+import de.lmu.ifi.dbs.elki.datasource.parser.NumberVectorLabelParser;
import de.lmu.ifi.dbs.elki.datasource.parser.Parser;
+import de.lmu.ifi.dbs.elki.datasource.parser.StreamingParser;
import de.lmu.ifi.dbs.elki.logging.Logging;
import de.lmu.ifi.dbs.elki.utilities.documentation.Description;
import de.lmu.ifi.dbs.elki.utilities.documentation.Title;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.ObjectParameter;
/**
* Provides a database connection expecting input from an input stream such as
@@ -54,14 +53,6 @@ public class InputStreamDatabaseConnection extends AbstractDatabaseConnection {
private static final Logging logger = Logging.getLogger(InputStreamDatabaseConnection.class);
/**
- * Parameter to specify the parser to provide a database.
- * <p>
- * Key: {@code -dbc.parser}
- * </p>
- */
- public static final OptionID PARSER_ID = OptionID.getOrCreateOptionID("dbc.parser", "Parser to provide the database.");
-
- /**
* Holds the instance of the parser.
*/
Parser parser;
@@ -88,14 +79,27 @@ public class InputStreamDatabaseConnection extends AbstractDatabaseConnection {
if(logger.isDebugging()) {
logger.debugFine("Invoking parsers.");
}
- MultipleObjectsBundle parsingResult = parser.parse(in);
+ if(parser instanceof StreamingParser) {
+ final StreamingParser streamParser = (StreamingParser)parser;
+ streamParser.initStream(in);
- // normalize objects and transform labels
- if(logger.isDebugging()) {
- logger.debugFine("Invoking filters.");
+ // normalize objects and transform labels
+ if(logger.isDebugging()) {
+ logger.debugFine("Invoking filters.");
+ }
+ MultipleObjectsBundle objects = MultipleObjectsBundle.fromStream(invokeFilters(streamParser));
+ return objects;
+ }
+ else {
+ MultipleObjectsBundle parsingResult = parser.parse(in);
+
+ // normalize objects and transform labels
+ if(logger.isDebugging()) {
+ logger.debugFine("Invoking filters.");
+ }
+ MultipleObjectsBundle objects = invokeFilters(parsingResult);
+ return objects;
}
- MultipleObjectsBundle objects = invokeFilters(parsingResult);
- return objects;
}
@Override
@@ -111,22 +115,13 @@ public class InputStreamDatabaseConnection extends AbstractDatabaseConnection {
* @apiviz.exclude
*/
public static class Parameterizer extends AbstractDatabaseConnection.Parameterizer {
- Parser parser = null;
-
@Override
protected void makeOptions(Parameterization config) {
super.makeOptions(config);
- configParser(config, Parser.class, DoubleVectorLabelParser.class);
+ configParser(config, Parser.class, NumberVectorLabelParser.class);
configFilters(config);
}
- protected void configParser(Parameterization config, Class<?> parserRestrictionClass, Class<?> parserDefaultValueClass) {
- ObjectParameter<Parser> parserParam = new ObjectParameter<Parser>(PARSER_ID, parserRestrictionClass, parserDefaultValueClass);
- if(config.grab(parserParam)) {
- parser = parserParam.instantiateClass(config);
- }
- }
-
@Override
protected InputStreamDatabaseConnection makeInstance() {
return new InputStreamDatabaseConnection(filters, parser);