// Path: src/main/java/net/unit8/solr/jdbc/value/SolrValue.java
// public abstract class SolrValue {
// 
// 	public SolrType getType() {
// 		return null;
// 	}
// 
// 	public abstract Object getObject();
// 	public abstract String getString();
// 	public abstract String getQueryString();
// 
// 	public Boolean getBoolean() {
// 		return convertTo(SolrType.BOOLEAN).getBoolean();
// 	}
// 
// 	public Date getDate() {
// 		return convertTo(SolrType.DATE).getDate();
// 	}
// 
// 	public Date getDateNoCopy() {
// 		return convertTo(SolrType.DATE).getDateNoCopy();
// 	}
// 
// 	public Timestamp getTimestamp() {
// 		Date d = getDate();
// 		return new Timestamp(d.getTime());
// 	}
// 	
// 	public BigDecimal getBigDecimal() {
// 		return convertTo(SolrType.DECIMAL).getBigDecimal();
// 	}
// 
// 	public int getInt() {
// 		return convertTo(SolrType.INT).getInt();
// 	}
// 
// 	public double getDouble() {
// 		return convertTo(SolrType.DOUBLE).getDouble();
// 	}
// 	
// 	public SolrValue convertTo(SolrType targetType) {
// 		if(getType() == targetType) {
// 			return this;
// 		}
// 		String s = getString();
// 		switch(targetType) {
// 		case NULL: {
// 			return ValueNull.INSTANCE;
// 		}
// 		case BOOLEAN: {
// 			return ValueBoolean.get(getSignum() != 0);
// 		}
// 		case INT: {
// 			return ValueInt.get(Integer.parseInt(s.trim()));
// 		}
// 		case LONG: {
// 			return ValueLong.get(Long.parseLong(s.trim()));
// 		}
// 		case DECIMAL: {
// 			return ValueDecimal.get(new BigDecimal(s.trim()));
// 		}
// 		case DATE: {
// 			return ValueDate.get(ValueDate.parseDate(s.trim()));
// 		}
// 		case STRING: {
// 			return ValueString.get(s);
// 		}
// 		case ARRAY: {
// 			return ValueArray.get(new SolrValue[]{ValueString.get(s)});
// 		}
// 		default:
//             throw DbException.get(ErrorCode.DATA_CONVERSION_ERROR_1, s);
// 		}
// 	}
// 
// 	public int getSignum() {
// 		throw new UnsupportedOperationException();
// 	}
// }
// 
// Path: src/main/java/net/unit8/solr/jdbc/value/ValueArray.java
// public class ValueArray extends SolrValue {
// 	private final SolrValue[] values;
// 
// 	private ValueArray(SolrValue[] list) {
// 		this.values = list;
// 	}
// 	
// 	/**
// 	 * Get or create a array value for the given value array.
// 	 * Do not clone the data.
// 	 * 
// 	 * @param list the value array
// 	 * @return the value
// 	 */
// 	public static ValueArray get(SolrValue[] list) {
// 		return new ValueArray(list);
// 	}
// 	
// 	public SolrValue[] getList() {
// 		return values;
// 	}
// 	
// 	@Override
// 	public SolrType getType() {
// 		return SolrType.ARRAY;
// 	}
// 	
// 	@Override
// 	public String getQueryString() {
// 		return values[0].getQueryString();
// 	}
// 
// 	@Override
// 	public String getString() {
// 		String[] strValues = new String[values.length];
// 		for(int i=0; i<values.length; i++) {
// 			strValues[i] = values[i].getString();
// 		}
// 		return "[" + StringUtils.join(strValues, ',') + "]";
// 	}
// 
// 	@Override
// 	public Object getObject() {
// 		Object[] list = new Object[values.length];
// 		for (int i=0; i < values.length; i++) {
// 			list[i] = values[i].getObject();
// 		}
// 		return list;
// 	}
// 
// }


import org.apache.solr.common.SolrInputDocument;
import net.unit8.solr.jdbc.value.SolrValue;
import net.unit8.solr.jdbc.value.ValueArray;
package net.unit8.solr.jdbc.util;




public class SolrDocumentUtil {
	public static void setValue(SolrInputDocument document, String columnName, SolrValue value) {
		if (value instanceof ValueArray) {
			SolrValue[] values = ((ValueArray)value).getList();
			for(SolrValue v : values) {
// Path: src/main/java/net/unit8/solr/jdbc/value/SolrValue.java
// public abstract class SolrValue {
// 
// 	public SolrType getType() {
// 		return null;
// 	}
// 
// 	public abstract Object getObject();
// 	public abstract String getString();
// 	public abstract String getQueryString();
// 
// 	public Boolean getBoolean() {
// 		return convertTo(SolrType.BOOLEAN).getBoolean();
// 	}
// 
// 	public Date getDate() {
// 		return convertTo(SolrType.DATE).getDate();
// 	}
// 
// 	public Date getDateNoCopy() {
// 		return convertTo(SolrType.DATE).getDateNoCopy();
// 	}
// 
// 	public Timestamp getTimestamp() {
// 		Date d = getDate();
// 		return new Timestamp(d.getTime());
// 	}
// 	
// 	public BigDecimal getBigDecimal() {
// 		return convertTo(SolrType.DECIMAL).getBigDecimal();
// 	}
// 
// 	public int getInt() {
// 		return convertTo(SolrType.INT).getInt();
// 	}
// 
// 	public double getDouble() {
// 		return convertTo(SolrType.DOUBLE).getDouble();
// 	}
// 	
// 	public SolrValue convertTo(SolrType targetType) {
// 		if(getType() == targetType) {
// 			return this;
// 		}
// 		String s = getString();
// 		switch(targetType) {
// 		case NULL: {
// 			return ValueNull.INSTANCE;
// 		}
// 		case BOOLEAN: {
// 			return ValueBoolean.get(getSignum() != 0);
// 		}
// 		case INT: {
// 			return ValueInt.get(Integer.parseInt(s.trim()));
// 		}
// 		case LONG: {
// 			return ValueLong.get(Long.parseLong(s.trim()));
// 		}
// 		case DECIMAL: {
// 			return ValueDecimal.get(new BigDecimal(s.trim()));
// 		}
// 		case DATE: {
// 			return ValueDate.get(ValueDate.parseDate(s.trim()));
// 		}
// 		case STRING: {
// 			return ValueString.get(s);
// 		}
// 		case ARRAY: {
// 			return ValueArray.get(new SolrValue[]{ValueString.get(s)});
// 		}
// 		default:
//             throw DbException.get(ErrorCode.DATA_CONVERSION_ERROR_1, s);
// 		}
// 	}
// 
// 	public int getSignum() {
// 		throw new UnsupportedOperationException();
// 	}
// }
// 
// Path: src/main/java/net/unit8/solr/jdbc/value/ValueArray.java
// public class ValueArray extends SolrValue {
// 	private final SolrValue[] values;
// 
// 	private ValueArray(SolrValue[] list) {
// 		this.values = list;
// 	}
// 	
// 	/**
// 	 * Get or create a array value for the given value array.
// 	 * Do not clone the data.
// 	 * 
// 	 * @param list the value array
// 	 * @return the value
// 	 */
// 	public static ValueArray get(SolrValue[] list) {
// 		return new ValueArray(list);
// 	}
// 	
// 	public SolrValue[] getList() {
// 		return values;
// 	}
// 	
// 	@Override
// 	public SolrType getType() {
// 		return SolrType.ARRAY;
// 	}
// 	
// 	@Override
// 	public String getQueryString() {
// 		return values[0].getQueryString();
// 	}
// 
// 	@Override
// 	public String getString() {
// 		String[] strValues = new String[values.length];
// 		for(int i=0; i<values.length; i++) {
// 			strValues[i] = values[i].getString();
// 		}
// 		return "[" + StringUtils.join(strValues, ',') + "]";
// 	}
// 
// 	@Override
// 	public Object getObject() {
// 		Object[] list = new Object[values.length];
// 		for (int i=0; i < values.length; i++) {
// 			list[i] = values[i].getObject();
// 		}
// 		return list;
// 	}
// 
// }


// Path: src/main/java/net/unit8/solr/jdbc/util/SolrDocumentUtil.java
import org.apache.solr.common.SolrInputDocument;
import net.unit8.solr.jdbc.value.SolrValue;
import net.unit8.solr.jdbc.value.ValueArray;

package net.unit8.solr.jdbc.util;




public class SolrDocumentUtil {
	public static void setValue(SolrInputDocument document, String columnName, SolrValue value) {
		if (value instanceof ValueArray) {
			SolrValue[] values = ((ValueArray)value).getList();
			for(SolrValue v : values) {
				document.addField(columnName, v.getObject());