// uniCenta oPOS - Touch Friendly Point Of Sale // Copyright (c) 2009-2013 uniCenta & previous Openbravo POS works // http://www.unicenta.net/unicentaopos // // This file is part of uniCenta oPOS // // uniCenta oPOS is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // uniCenta oPOS is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with uniCenta oPOS. If not, see <http://www.gnu.org/licenses/>. package com.openbravo.data.loader; import com.openbravo.basic.BasicException; import java.text.DateFormat; import java.text.SimpleDateFormat; public abstract class Datas { public final static Datas INT = new DatasINT(); public final static Datas STRING = new DatasSTRING(); public final static Datas DOUBLE = new DatasDOUBLE(); public final static Datas BOOLEAN = new DatasBOOLEAN(); public final static Datas TIMESTAMP = new DatasTIMESTAMP(); public final static Datas BYTES = new DatasBYTES(); public final static Datas IMAGE = new DatasIMAGE(); //public final static Datas INPUTSTREAM = new DatasINPUTSTREAM(); public final static Datas OBJECT = new DatasOBJECT(); public final static Datas SERIALIZABLE = new DatasSERIALIZABLE(); public final static Datas NULL = new DatasNULL(); private static DateFormat tsf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); /** Creates a new instance of Datas */ private Datas() { } public abstract Object getValue(DataRead dr, int i) throws BasicException; public abstract void setValue(DataWrite dw, int i, Object value) throws BasicException; public abstract Class getClassValue(); protected abstract String toStringAbstract(Object value); protected abstract int compareAbstract(Object o1, Object o2); public String toString(Object value) { if (value == null) { return "null"; } else { return toStringAbstract(value); } } public int compare(Object o1, Object o2) { if (o1 == null) { if (o2 == null) { return 0; } else { return -1; } } else if (o2 == null) { return +1; } else { return compareAbstract(o1, o2); } } private static final class DatasINT extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getInt(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setInt(i, (Integer) value); } public Class getClassValue() { return java.lang.Integer.class; } protected String toStringAbstract(Object value) { return ((Integer) value).toString(); } protected int compareAbstract(Object o1, Object o2) { return ((Integer) o1).compareTo((Integer) o2); } } private static final class DatasSTRING extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getString(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setString(i, (String) value); } public Class getClassValue() { return java.lang.String.class; } protected String toStringAbstract(Object value) { return "\'" + DataWriteUtils.getEscaped((String) value) + "\'"; } protected int compareAbstract(Object o1, Object o2) { return ((String) o1).compareTo((String) o2); } } private static final class DatasDOUBLE extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getDouble(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setDouble(i, (Double) value); } public Class getClassValue() { return java.lang.Double.class; } protected String toStringAbstract(Object value) { return ((Double) value).toString(); } protected int compareAbstract(Object o1, Object o2) { return ((Double) o1).compareTo((Double) o2); } } private static final class DatasBOOLEAN extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getBoolean(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setBoolean(i, (Boolean) value); } public Class getClassValue() { return java.lang.Boolean.class; } protected String toStringAbstract(Object value) { return ((Boolean) value).toString(); } protected int compareAbstract(Object o1, Object o2) { return ((Boolean) o1).compareTo((Boolean) o2); } } private static final class DatasTIMESTAMP extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getTimestamp(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setTimestamp(i, (java.util.Date) value); } public Class getClassValue() { return java.util.Date.class; } protected String toStringAbstract(Object value) { return tsf.format(value); } protected int compareAbstract(Object o1, Object o2) { return ((java.util.Date) o1).compareTo((java.util.Date) o2); } } private static final class DatasBYTES extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getBytes(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setBytes(i, (byte[]) value); } public Class getClassValue() { return byte[].class; } protected String toStringAbstract(Object value) { return "0x" + ImageUtils.bytes2hex((byte[]) value); } protected int compareAbstract(Object o1, Object o2) { throw new UnsupportedOperationException(); } } private static final class DatasIMAGE extends Datas { @Override public Object getValue(DataRead dr, int i) throws BasicException { return ImageUtils.readImage(dr.getBytes(i)); } @Override public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setBytes(i, ImageUtils.writeImage((java.awt.image.BufferedImage) value)); } @Override public Class getClassValue() { return java.awt.image.BufferedImage.class; } @Override protected String toStringAbstract(Object value) { return "0x" + ImageUtils.bytes2hex(ImageUtils.writeImage((java.awt.image.BufferedImage) value)); } @Override protected int compareAbstract(Object o1, Object o2) { throw new UnsupportedOperationException(); } } // private static final class DatasINPUTSTREAM extends Datas { // public Object getValue(DataRead dr, int i) throws DataException { // byte[] b = dr.getBytes(i); // return b == null ? null : new java.io.ByteArrayInputStream(b); // } // public void setValue(DataWrite dw, int i, Object value) throws DataException { // } // } private static final class DatasOBJECT extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return dr.getObject(i); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setObject(i, value); } public Class getClassValue() { return java.lang.Object.class; } protected String toStringAbstract(Object value) { return "0x" + ImageUtils.bytes2hex(ImageUtils.writeSerializable(value)); } protected int compareAbstract(Object o1, Object o2) { throw new UnsupportedOperationException(); } } private static final class DatasSERIALIZABLE extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return ImageUtils.readSerializable(dr.getBytes(i)); } public void setValue(DataWrite dw, int i, Object value) throws BasicException { dw.setBytes(i, ImageUtils.writeSerializable(value)); } public Class getClassValue() { return java.lang.Object.class; } protected String toStringAbstract(Object value) { return "0x" + ImageUtils.bytes2hex(ImageUtils.writeSerializable(value)); } protected int compareAbstract(Object o1, Object o2) { throw new UnsupportedOperationException(); } } private static final class DatasNULL extends Datas { public Object getValue(DataRead dr, int i) throws BasicException { return null; } public void setValue(DataWrite dw, int i, Object value) throws BasicException { // No asigno null, no asigno nada. } public Class getClassValue() { return java.lang.Object.class; } protected String toStringAbstract(Object value) { return "null"; } protected int compareAbstract(Object o1, Object o2) { throw new UnsupportedOperationException(); } } }