
net.sf.jsefa.csv.CsvIOFactoryImpl Maven / Gradle / Ivy
Show all versions of jsefa-android Show documentation
/*
* Copyright 2007 the original author or authors.
*
* 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 net.sf.jsefa.csv;
import java.util.Map;
import net.sf.jsefa.IOFactoryException;
import net.sf.jsefa.csv.config.CsvConfiguration;
import net.sf.jsefa.csv.lowlevel.CsvLowLevelIOFactory;
import net.sf.jsefa.rbf.RbfIOFactory;
import net.sf.jsefa.rbf.mapping.RbfEntryPoint;
/**
* Default implementation of {@link CsvIOFactory}.
*
* Instances of this class are immutable and thread-safe.
*
* @author Norman Lahme-Huetig
*/
public class CsvIOFactoryImpl extends CsvIOFactory {
private final RbfIOFactory rbfIOFactory;
private final CsvLowLevelIOFactory lowLevelIOFactory;
/**
* Creates a new CsvIOFactory
for CsvSerializer
s and
* CsvDeserializer
s using the given configuration.
*
* @param config the configuration object.
* @return a CsvIOFactory
factory
* @throws IOFactoryException
*/
public static CsvIOFactory createFactory(CsvConfiguration config) {
return new CsvIOFactoryImpl(config);
}
CsvIOFactoryImpl(CsvConfiguration config) {
this.rbfIOFactory = createRbfIOFactory(config);
this.lowLevelIOFactory = CsvLowLevelIOFactory.createFactory(config.getLowLevelConfiguration());
}
/**
* {@inheritDoc}
*/
public CsvSerializer createSerializer() {
return this.rbfIOFactory.createSerializer();
}
/**
* {@inheritDoc}
*/
public CsvDeserializer createDeserializer() {
return this.rbfIOFactory.createDeserializer();
}
private RbfIOFactory createRbfIOFactory(
CsvConfiguration config) {
return new RbfIOFactory(config) {
@Override
protected CsvSerializer createSerializer(CsvConfiguration config,
Map, RbfEntryPoint> entryPointsByObjectType) {
return new CsvSerializerImpl(config, entryPointsByObjectType, lowLevelIOFactory.createSerializer());
}
@Override
protected CsvDeserializer createDeserializer(CsvConfiguration config, RbfEntryPoint entryPoint) {
return new CsvDeserializerImpl(config, entryPoint, lowLevelIOFactory.createDeserializer());
}
@Override
protected CsvDeserializer createDeserializer(CsvConfiguration config,
Map entryPointsByPrefix) {
return new CsvDeserializerImpl(config, entryPointsByPrefix, lowLevelIOFactory.createDeserializer());
}
};
}
}