diff options
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java')
-rw-r--r-- | src/de/lmu/ifi/dbs/elki/datasource/InputStreamDatabaseConnection.java | 51 |
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); |