/* * * * Copyright 2010-2014 Orient Technologies LTD (info(at)orientechnologies.com) * * * * Licensed under the Apache License, Version 2.0 (the "License"); * * you may not use this file except in compliance with the License. * * You may obtain a copy of the License at * * * * http://www.apache.org/licenses/LICENSE-2.0 * * * * Unless required by applicable law or agreed to in writing, software * * distributed under the License is distributed on an "AS IS" BASIS, * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * * limitations under the License. * */ package com.orientechnologies.orient.etl; import com.orientechnologies.common.log.OLogManager; import com.orientechnologies.orient.etl.block.OBlock; import com.orientechnologies.orient.etl.block.OCodeBlock; import com.orientechnologies.orient.etl.block.OConsoleBlock; import com.orientechnologies.orient.etl.block.OLetBlock; import com.orientechnologies.orient.etl.extractor.*; import com.orientechnologies.orient.etl.loader.OLoader; import com.orientechnologies.orient.etl.loader.OOrientDBLoader; import com.orientechnologies.orient.etl.loader.OOutputLoader; import com.orientechnologies.orient.etl.loader.OStreamLoader; import com.orientechnologies.orient.etl.source.OContentSource; import com.orientechnologies.orient.etl.source.OFileSource; import com.orientechnologies.orient.etl.source.OHttpSource; import com.orientechnologies.orient.etl.source.OInputSource; import com.orientechnologies.orient.etl.source.OSource; import com.orientechnologies.orient.etl.transformer.*; import java.util.HashMap; import java.util.Map; /** * ETL component factory. Registers all the ETL components. * * @author Luca Garulli (l.garulli-at-orientechnologies.com) */ public class OETLComponentFactory { protected final Map<String, Class<? extends OSource>> sources = new HashMap<String, Class<? extends OSource>>(); protected final Map<String, Class<? extends OBlock>> blocks = new HashMap<String, Class<? extends OBlock>>(); protected final Map<String, Class<? extends OExtractor>> extractors = new HashMap<String, Class<? extends OExtractor>>(); protected final Map<String, Class<? extends OTransformer>> transformers = new HashMap<String, Class<? extends OTransformer>>(); protected final Map<String, Class<? extends OLoader>> loaders = new HashMap<String, Class<? extends OLoader>>(); public OETLComponentFactory() { registerSource(OFileSource.class); registerSource(OHttpSource.class); registerSource(OInputSource.class); registerSource(OContentSource.class); registerBlock(OCodeBlock.class); registerBlock(OLetBlock.class); registerBlock(OConsoleBlock.class); registerExtractor(OJDBCExtractor.class); registerExtractor(ORowExtractor.class); registerExtractor(OJsonExtractor.class); registerExtractor(OXmlExtractor.class); registerExtractor(OCSVExtractor.class); registerTransformer(OBlockTransformer.class); registerTransformer(OCodeTransformer.class); registerTransformer(OCSVTransformer.class); registerTransformer(OCommandTransformer.class); registerTransformer(OEdgeTransformer.class); registerTransformer(OFieldTransformer.class); registerTransformer(OJSONTransformer.class); registerTransformer(OLinkTransformer.class); registerTransformer(OLogTransformer.class); registerTransformer(OMergeTransformer.class); registerTransformer(OFlowTransformer.class); registerTransformer(OVertexTransformer.class); registerLoader(OOrientDBLoader.class); registerLoader(OStreamLoader.class); registerLoader(OOutputLoader.class); } public OETLComponentFactory registerSource(final Class<? extends OSource> iComponent) { try { sources.put(iComponent.newInstance().getName(), iComponent); } catch (Exception e) { OLogManager.instance().error(this, "Error on registering source: %s", iComponent.getName()); } return this; } public OETLComponentFactory registerBlock(final Class<? extends OBlock> iComponent) { try { blocks.put(iComponent.newInstance().getName(), iComponent); } catch (Exception e) { OLogManager.instance().error(this, "Error on registering block: %s", iComponent.getName()); } return this; } public OETLComponentFactory registerExtractor(final Class<? extends OExtractor> iComponent) { try { extractors.put(iComponent.newInstance().getName(), iComponent); } catch (Exception e) { OLogManager.instance().error(this, "Error on registering extractor: %s", iComponent.getName()); } return this; } public OETLComponentFactory registerTransformer(final Class<? extends OTransformer> iComponent) { try { transformers.put(iComponent.newInstance().getName(), iComponent); } catch (Exception e) { OLogManager.instance().error(this, "Error on registering transformer: %s", iComponent.getName()); } return this; } public OETLComponentFactory registerLoader(final Class<? extends OLoader> iComponent) { try { loaders.put(iComponent.newInstance().getName(), iComponent); } catch (Exception e) { OLogManager.instance().error(this, "Error on registering loader: %s", iComponent.getName()); } return this; } public OExtractor getExtractor(final String iName) throws IllegalAccessException, InstantiationException { final Class<? extends OExtractor> cls = extractors.get(iName); if (cls == null) throw new IllegalArgumentException("Extractor '" + iName + "' not found"); return cls.newInstance(); } public OTransformer getTransformer(final String iName) throws IllegalAccessException, InstantiationException { final Class<? extends OTransformer> cls = transformers.get(iName); if (cls == null) throw new IllegalArgumentException("Transformer '" + iName + "' not found"); return cls.newInstance(); } public OBlock getBlock(final String iName) throws IllegalAccessException, InstantiationException { final Class<? extends OBlock> cls = blocks.get(iName); if (cls == null) throw new IllegalArgumentException("Block '" + iName + "' not found"); return cls.newInstance(); } public OLoader getLoader(final String iName) throws IllegalAccessException, InstantiationException { final Class<? extends OLoader> cls = loaders.get(iName); if (cls == null) throw new IllegalArgumentException("Loader '" + iName + "' not found"); return cls.newInstance(); } public OSource getSource(final String iName) throws IllegalAccessException, InstantiationException { final Class<? extends OSource> cls = sources.get(iName); if (cls == null) throw new IllegalArgumentException("Source '" + iName + "' not found"); return cls.newInstance(); } }