Search in sources :

Example 1 with DataSet

use of jp.ossc.nimbus.beans.dataset.DataSet in project nimbus by nimbus-org.

the class HttpResponseImplTest method testSetObjectByServiceName.

/**
 * HttpResponseのストリームを設定、取得するテスト。
 * <p>
 * 条件:
 * <ul>
 * <li>XMLストリームデータをデータセットに変換して取得する</li>
 * <li>次の内容をDataSetXMLConverterで変換する<BR>
 * <PRE>
 * <?xml version="1.0" encoding="UTF-8"?>
 *  <dataSet>
 *   <schema>
 *    <header name="TestHeader">
 *     :A,java.util.Date,
 *     "jp.ossc.nimbus.util.converter.DateFormatConverter{ConvertType=2;Format="yyyy-MM-DD"}",
 *     "jp.ossc.nimbus.util.converter.DateFormatConverter{ConvertType=1;Format="yyyy-MM-DD"}",
 *     "@value@ != null"
 *     :B,java.lang.String,,,
 *    </header>
 *   </schema>
 *    <header name="TestHeader"><A>2008-01-28</A><B>TestValue</B></header></dataSet>
 * <PRE></li>
 * <li>上記のストリームデータとコンバータをプロパティに設定して、<BR>
 * HttpResponse#getObjectを実行</li>
 * </ul>
 * 確認:
 * <ul>
 * <li>正しい値が返ってくることを確認</li>
 * </ul>
 */
public void testSetObjectByServiceName() {
    try {
        // コンバータサービスの定義ファイルをロード
        if (!ServiceManagerFactory.loadManager("jp/ossc/nimbus/service/http/httpclient/service-conv.xml")) {
            System.exit(-1);
        }
        HttpResponseImpl res = new HttpResponseImpl();
        // CharacterEncodingを設定しておく
        res.headerMap = new HashMap();
        String[] vals = new String[] { "application/xml;charset=Shift_JIS" };
        res.headerMap.put("Content-Type", vals);
        String inxml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<dataSet><schema><header name=\"TestHeader\">" + ":A,java.util.Date," + "\"jp.ossc.nimbus.util.converter.DateFormatConverter{ConvertType=2;Format=\"yyyy-MM-DD\"}\"," + "\"jp.ossc.nimbus.util.converter.DateFormatConverter{ConvertType=1;Format=\"yyyy-MM-DD\"}\"," + "\"@value@ != null\"\n:B,java.lang.String,,," + "</header></schema><header name=\"TestHeader\">" + "<A>2008-01-28</A><B>TestValue</B></header></dataSet>";
        // 入力ストリームとコンバーターサービス名をプロパティにセット
        InputStream is = new ByteArrayInputStream(inxml.getBytes());
        res.setInputStream(is);
        ServiceName name = new ServiceName("DataSetXMLConverter");
        res.setStreamConverterServiceName(name);
        // 
        DataSet dataset = (DataSet) res.getObject();
        assertEquals("TestHeader", dataset.getHeader("TestHeader").getName());
        assertEquals(":A,java.util.Date," + "\"jp.ossc.nimbus.util.converter.DateFormatConverter{ConvertType=2;Format=\"yyyy-MM-DD\"}\"," + "\"jp.ossc.nimbus.util.converter.DateFormatConverter{ConvertType=1;Format=\"yyyy-MM-DD\"}\"," + "\"@value@ != null\"\n:B,java.lang.String,,,", dataset.getHeader("TestHeader").getSchema());
        assertEquals("2008-01-28", dataset.getHeader("TestHeader").getFormatProperty("A"));
        assertEquals("TestValue", dataset.getHeader("TestHeader").getProperty("B"));
    } catch (PropertySchemaDefineException e) {
        e.printStackTrace();
        fail("例外発生");
    } catch (ConvertException e) {
        e.printStackTrace();
        fail("例外発生");
    } finally {
        ServiceManagerFactory.unloadManager("jp/ossc/nimbus/service/http/httpclient/service-conv.xml");
    }
}
Also used : PropertySchemaDefineException(jp.ossc.nimbus.beans.dataset.PropertySchemaDefineException) ConvertException(jp.ossc.nimbus.util.converter.ConvertException) ServiceName(jp.ossc.nimbus.core.ServiceName) DataSet(jp.ossc.nimbus.beans.dataset.DataSet)

Example 2 with DataSet

use of jp.ossc.nimbus.beans.dataset.DataSet in project nimbus by nimbus-org.

the class DataSetHtmlConverterTest method testConvertToObject.

public void testConvertToObject() {
    DataSet inputDataSet = new DataSetHtmlConverterTestDataSet();
    DataSetHtmlConverter converter = new DataSetHtmlConverter();
    converter.setCharacterEncodingToObject("Windows-31J");
    DataSetHtmlConverterTestDataSet dataSet = (DataSetHtmlConverterTestDataSet) converter.convertToObject(createTestData(), inputDataSet);
    Header header = dataSet.getHeader();
    RecordList recordList = dataSet.getRecordList();
    Assert.assertEquals("タイトル", header.get(DataSetHtmlConverterTestDataSet.PROPERTY1));
    Assert.assertEquals("テキスト", header.get(DataSetHtmlConverterTestDataSet.PROPERTY2));
    for (int i = 0; i < recordList.size(); i++) {
        Record record = (Record) recordList.get(i);
        Assert.assertEquals("テキスト" + (i + 1) + "-1", record.get(DataSetHtmlConverterTestDataSet.PROPERTY3));
        Assert.assertEquals("テキスト" + (i + 1) + "-2", record.get(DataSetHtmlConverterTestDataSet.PROPERTY4));
        Assert.assertEquals("テキスト" + (i + 1) + "-3", record.get(DataSetHtmlConverterTestDataSet.PROPERTY5));
    }
}
Also used : Header(jp.ossc.nimbus.beans.dataset.Header) RecordList(jp.ossc.nimbus.beans.dataset.RecordList) DataSet(jp.ossc.nimbus.beans.dataset.DataSet) Record(jp.ossc.nimbus.beans.dataset.Record)

Example 3 with DataSet

use of jp.ossc.nimbus.beans.dataset.DataSet in project nimbus by nimbus-org.

the class DataSetJournalEditorService method processBlock.

protected boolean processBlock(EditorFinder finder, Object key, Object value, StringBuilder buf) {
    final DataSet bean = (DataSet) value;
    boolean isMake = false;
    if (isOutputDataSetName()) {
        makeDataSetNameFormat(finder, key, bean, buf);
        isMake = true;
    }
    if (isMake) {
        buf.append(getLineSeparator());
    }
    makeHeadersFormat(finder, key, bean, buf);
    buf.append(getLineSeparator());
    makeRecordListsFormat(finder, key, bean, buf);
    return true;
}
Also used : DataSet(jp.ossc.nimbus.beans.dataset.DataSet)

Example 4 with DataSet

use of jp.ossc.nimbus.beans.dataset.DataSet in project nimbus by nimbus-org.

the class DefaultPersistentManagerService method fillOutput.

private Object fillOutput(ResultSet resultSet, Object output, Map outputMapping, boolean isCursor) throws PersistentException {
    if (output == null) {
        if (isCursor) {
            output = new LinkedHashMap();
        } else {
            output = new ArrayList();
        }
    }
    try {
        final ResultSetMetaData metadata = resultSet.getMetaData();
        final int colCount = metadata.getColumnCount();
        boolean isOutputMappingFromMetaData = false;
        if (outputMapping == null && (output instanceof RecordList || output instanceof Record || !(output instanceof List))) {
            outputMapping = new LinkedHashMap();
            for (int i = 1; i <= colCount; i++) {
                outputMapping.put(metadata.getColumnName(i), metadata.getColumnName(i).toUpperCase());
            }
            isOutputMappingFromMetaData = true;
        }
        if (output instanceof DataSet) {
            final Set headerSet = new LinkedHashSet();
            final Map recordListMap = new LinkedHashMap();
            final Map recordListPropMap = new LinkedHashMap();
            Iterator itr = outputMapping.entrySet().iterator();
            while (itr.hasNext()) {
                final Map.Entry entry = (Map.Entry) itr.next();
                final Property prop = propertyAccess.getProperty((String) entry.getValue());
                if (prop instanceof NestedProperty) {
                    Object obj = ((NestedProperty) prop).getThisProperty().getProperty(output);
                    if (obj instanceof RecordList) {
                        recordListMap.put(entry.getKey(), (RecordList) obj);
                        recordListPropMap.put(entry.getKey(), ((NestedProperty) prop).getNestedProperty());
                    } else {
                        headerSet.add(entry.getKey());
                    }
                } else {
                    throw new PersistentException("Output bean fill error.");
                }
            }
            final Map recordMap = new HashMap();
            while (true) {
                if (!isCursor) {
                    if (!resultSet.next()) {
                        break;
                    }
                }
                if (headerSet.size() != 0) {
                    itr = headerSet.iterator();
                    while (itr.hasNext()) {
                        final String columnName = (String) itr.next();
                        setValue(output, (String) outputMapping.get(columnName), resultSet, columnName, isOutputMappingFromMetaData);
                    }
                    headerSet.clear();
                }
                recordMap.clear();
                itr = recordListMap.entrySet().iterator();
                while (itr.hasNext()) {
                    final Map.Entry entry = (Map.Entry) itr.next();
                    final RecordList list = (RecordList) entry.getValue();
                    Record record = (Record) recordMap.get(list);
                    if (record == null) {
                        record = list.createRecord();
                        recordMap.put(list, record);
                        list.addRecord(record);
                    }
                    Property prop = (Property) recordListPropMap.get(entry.getKey());
                    prop.setProperty(record, getValue(record, prop, resultSet, (String) entry.getKey()));
                }
                if (isCursor) {
                    break;
                }
            }
            return output;
        } else if (output instanceof RecordList) {
            RecordList list = (RecordList) output;
            if (list.getSchema() == null) {
                list.setSchema(createSchema(metadata));
            }
            while (true) {
                if (!isCursor) {
                    if (!resultSet.next()) {
                        break;
                    }
                }
                final Record record = list.createRecord();
                final Iterator itr = outputMapping.entrySet().iterator();
                while (itr.hasNext()) {
                    final Map.Entry entry = (Map.Entry) itr.next();
                    setValue(record, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
                }
                list.addRecord(record);
                if (isCursor) {
                    break;
                }
            }
            return list;
        } else if (output instanceof List) {
            List list = (List) output;
            while (true) {
                if (!isCursor) {
                    if (!resultSet.next()) {
                        break;
                    }
                }
                final Map record = new LinkedHashMap();
                for (int i = 1; i <= colCount; i++) {
                    record.put(metadata.getColumnName(i), resultSet.getObject(i));
                }
                list.add(record);
                if (isCursor) {
                    break;
                }
            }
            return list;
        } else if (output instanceof Class) {
            final Class outputClass = (Class) output;
            if (Record.class.isAssignableFrom(outputClass)) {
                if (!isCursor) {
                    if (!resultSet.next()) {
                        return null;
                    }
                }
                Record record = null;
                try {
                    record = (Record) outputClass.newInstance();
                    if (record.getSchema() == null) {
                        record.setSchema(createSchema(metadata));
                    }
                } catch (InstantiationException e) {
                    throw new PersistentException("Output bean instantiate error.", e);
                } catch (IllegalAccessException e) {
                    throw new PersistentException("Output bean instantiate error.", e);
                }
                final Iterator itr = outputMapping.entrySet().iterator();
                while (itr.hasNext()) {
                    final Map.Entry entry = (Map.Entry) itr.next();
                    setValue(record, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
                }
                return record;
            } else if (RecordList.class.isAssignableFrom(outputClass)) {
                RecordList list = null;
                try {
                    list = (RecordList) outputClass.newInstance();
                    if (list.getSchema() == null) {
                        list.setSchema(createSchema(metadata));
                    }
                } catch (InstantiationException e) {
                    throw new PersistentException("Output bean instantiate error.", e);
                } catch (IllegalAccessException e) {
                    throw new PersistentException("Output bean instantiate error.", e);
                }
                while (true) {
                    if (!isCursor) {
                        if (!resultSet.next()) {
                            break;
                        }
                    }
                    final Record record = list.createRecord();
                    final Iterator itr = outputMapping.entrySet().iterator();
                    while (itr.hasNext()) {
                        final Map.Entry entry = (Map.Entry) itr.next();
                        setValue(record, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
                    }
                    list.addRecord(record);
                    if (isCursor) {
                        break;
                    }
                }
                return list;
            } else if (outputClass.isArray()) {
                List list = new ArrayList();
                while (true) {
                    Object bean = fillOutput(resultSet, outputClass.getComponentType(), outputMapping, isCursor);
                    if (bean == null && (resultSet.isAfterLast() || resultSet.getRow() == 0)) {
                        break;
                    }
                    list.add(bean);
                    if (isCursor) {
                        break;
                    }
                }
                return listToArray(list, outputClass.getComponentType());
            } else if (String.class.equals(outputClass) || outputClass.isPrimitive() || Number.class.isAssignableFrom(outputClass)) {
                if (!isCursor) {
                    if (!resultSet.next()) {
                        return null;
                    }
                }
                return getValue(outputClass, resultSet, 1);
            } else {
                if (isCursor) {
                    Object bean = null;
                    try {
                        bean = outputClass.newInstance();
                    } catch (InstantiationException e) {
                        throw new PersistentException("Output bean instantiate error.", e);
                    } catch (IllegalAccessException e) {
                        throw new PersistentException("Output bean instantiate error.", e);
                    }
                    final Iterator itr = outputMapping.entrySet().iterator();
                    while (itr.hasNext()) {
                        final Map.Entry entry = (Map.Entry) itr.next();
                        setValue(bean, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
                    }
                    return bean;
                } else {
                    final List list = new ArrayList();
                    while (resultSet.next()) {
                        Object bean = null;
                        try {
                            bean = outputClass.newInstance();
                        } catch (InstantiationException e) {
                            if (isOutputMappingFromMetaData && outputMapping.size() == 1 && list.size() == 0) {
                                return getValue(outputClass, resultSet, 1);
                            }
                            throw new PersistentException("Output bean instantiate error.", e);
                        } catch (IllegalAccessException e) {
                            if (isOutputMappingFromMetaData && outputMapping.size() == 1 && list.size() == 0) {
                                return getValue(outputClass, resultSet, 1);
                            }
                            throw new PersistentException("Output bean instantiate error.", e);
                        }
                        final Iterator itr = outputMapping.entrySet().iterator();
                        while (itr.hasNext()) {
                            final Map.Entry entry = (Map.Entry) itr.next();
                            try {
                                setValue(bean, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
                            } catch (PersistentException e) {
                                if (isOutputMappingFromMetaData && outputMapping.size() == 1 && list.size() == 0) {
                                    return getValue(outputClass, resultSet, 1);
                                }
                                throw e;
                            }
                        }
                        list.add(bean);
                    }
                    return list;
                }
            }
        } else {
            if (!isCursor) {
                if (!resultSet.next()) {
                    return null;
                }
            }
            if (output instanceof Record) {
                Record record = (Record) output;
                if (record.getSchema() == null) {
                    record.setSchema(createSchema(metadata));
                }
            }
            final Iterator itr = outputMapping.entrySet().iterator();
            while (itr.hasNext()) {
                final Map.Entry entry = (Map.Entry) itr.next();
                setValue(output, (String) entry.getValue(), resultSet, (String) entry.getKey(), isOutputMappingFromMetaData);
            }
            return output;
        }
    } catch (IllegalArgumentException e) {
        throw new PersistentException("Output bean fill error.", e);
    } catch (NoSuchPropertyException e) {
        throw new PersistentException("Output bean fill error.", e);
    } catch (InvocationTargetException e) {
        throw new PersistentException("Output bean fill error.", e.getTargetException());
    } catch (SQLException e) {
        throw new PersistentException("Output bean fill error.", e);
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) ResultSet(java.sql.ResultSet) LinkedHashSet(java.util.LinkedHashSet) DataSet(jp.ossc.nimbus.beans.dataset.DataSet) Set(java.util.Set) DataSet(jp.ossc.nimbus.beans.dataset.DataSet) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) ResultSetMetaData(java.sql.ResultSetMetaData) Iterator(java.util.Iterator) Record(jp.ossc.nimbus.beans.dataset.Record) RecordList(jp.ossc.nimbus.beans.dataset.RecordList) ArrayList(java.util.ArrayList) List(java.util.List) NestedProperty(jp.ossc.nimbus.beans.NestedProperty) Property(jp.ossc.nimbus.beans.Property) NestedProperty(jp.ossc.nimbus.beans.NestedProperty) InvocationTargetException(java.lang.reflect.InvocationTargetException) RecordList(jp.ossc.nimbus.beans.dataset.RecordList) NoSuchPropertyException(jp.ossc.nimbus.beans.NoSuchPropertyException) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Example 5 with DataSet

use of jp.ossc.nimbus.beans.dataset.DataSet in project nimbus by nimbus-org.

the class DefaultPersistentManagerService method persistQueryInternal.

private int persistQueryInternal(String sql, PreparedStatement statement, Object input, List inputProps, boolean isBatch) throws PersistentException {
    if (input instanceof DataSet) {
        if (inputProps == null) {
            throw new PersistentException("Input bean get error.");
        }
        final List beans = new ArrayList();
        final List properties = new ArrayList();
        int count = -1;
        try {
            final Iterator itr = inputProps.iterator();
            while (itr.hasNext()) {
                final Object propStr = itr.next();
                final Property prop = propertyAccess.getProperty(propStr.toString());
                if (prop instanceof NestedProperty) {
                    Object obj = ((NestedProperty) prop).getThisProperty().getProperty(input);
                    if (obj instanceof RecordList) {
                        final int size = ((RecordList) obj).size();
                        if (count == -1) {
                            count = size;
                        } else if (count != size) {
                            throw new PersistentException("Input bean get error.");
                        }
                    }
                    beans.add(obj);
                    properties.add(((NestedProperty) prop).getNestedProperty());
                } else {
                    throw new PersistentException("Input bean get error.");
                }
            }
        } catch (NoSuchPropertyException e) {
            throw new PersistentException("Input bean get error.", e);
        } catch (InvocationTargetException e) {
            throw new PersistentException("Input bean get error.", e.getTargetException());
        }
        if (count == 0) {
            return 0;
        }
        if (count == -1) {
            try {
                for (int i = 0, imax = beans.size(); i < imax; i++) {
                    Object param = ((Property) properties.get(i)).getProperty(beans.get(i));
                    setObject(statement, i + 1, param);
                }
            } catch (NoSuchPropertyException e) {
                throw new PersistentException("Input bean get error.", e);
            } catch (InvocationTargetException e) {
                throw new PersistentException("Input bean get error.", e.getTargetException());
            }
            try {
                if (isBatch) {
                    statement.addBatch();
                    return -1;
                } else {
                    return statement.executeUpdate();
                }
            } catch (SQLException e) {
                throw new PersistentException("SQL execute error : " + sql, e);
            }
        } else {
            for (int i = 0; i < count; i++) {
                try {
                    for (int j = 0, jmax = beans.size(); j < jmax; j++) {
                        Object bean = beans.get(j);
                        if (bean instanceof RecordList) {
                            bean = ((RecordList) bean).get(i);
                        }
                        Object param = ((Property) properties.get(j)).getProperty(bean);
                        setObject(statement, j + 1, param);
                    }
                } catch (NoSuchPropertyException e) {
                    throw new PersistentException("Input bean get error.", e);
                } catch (InvocationTargetException e) {
                    throw new PersistentException("Input bean get error.", e.getTargetException());
                }
                try {
                    statement.addBatch();
                } catch (SQLException e) {
                    throw new PersistentException("SQL add batch error : " + sql, e);
                }
            }
            if (isBatch) {
                return -1;
            } else {
                int[] updateCounts = null;
                try {
                    updateCounts = statement.executeBatch();
                } catch (SQLException e) {
                    throw new PersistentException("SQL execute error : " + sql, e);
                }
                int result = 0;
                for (int i = 0; i < updateCounts.length; i++) {
                    if (updateCounts[i] > 0) {
                        result += updateCounts[i];
                    }
                }
                if (result == 0) {
                    try {
                        result = statement.getUpdateCount();
                    } catch (SQLException e) {
                    }
                }
                return result;
            }
        }
    } else if ((input instanceof List) || (input != null && input.getClass().isArray())) {
        List list = null;
        if (input instanceof List) {
            list = (List) input;
        } else {
            list = (List) Arrays.asList((Object[]) input);
        }
        if (inputProps != null) {
            if (list.size() == 0) {
                return 0;
            }
            for (int j = 0, jmax = list.size(); j < jmax; j++) {
                Object bean = list.get(j);
                try {
                    for (int i = 0, imax = inputProps.size(); i < imax; i++) {
                        Object param = propertyAccess.get(bean, inputProps.get(i).toString());
                        setObject(statement, i + 1, param);
                    }
                } catch (NoSuchPropertyException e) {
                    throw new PersistentException("Input bean get error.", e);
                } catch (InvocationTargetException e) {
                    throw new PersistentException("Input bean get error.", e.getTargetException());
                }
                try {
                    statement.addBatch();
                } catch (SQLException e) {
                    throw new PersistentException("SQL add batch error : " + sql, e);
                }
            }
            if (isBatch) {
                return -1;
            } else {
                int[] updateCounts = null;
                try {
                    updateCounts = statement.executeBatch();
                } catch (SQLException e) {
                    throw new PersistentException("SQL execute error : " + sql, e);
                }
                int result = 0;
                for (int i = 0; i < updateCounts.length; i++) {
                    if (updateCounts[i] > 0) {
                        result += updateCounts[i];
                    }
                }
                if (result == 0) {
                    try {
                        result = statement.getUpdateCount();
                    } catch (SQLException e) {
                    }
                }
                return result;
            }
        } else {
            if (list.size() == 0) {
                return 0;
            }
            int result = 0;
            for (int i = 0, imax = list.size(); i < imax; i++) {
                Object bean = list.get(i);
                if (bean instanceof Map) {
                    try {
                        Iterator propItr = ((Map) bean).keySet().iterator();
                        int j = 0;
                        while (propItr.hasNext()) {
                            Object param = propertyAccess.get(bean, propItr.next().toString());
                            setObject(statement, ++j, param);
                        }
                    } catch (NoSuchPropertyException e) {
                        throw new PersistentException("Input bean get error.", e);
                    } catch (InvocationTargetException e) {
                        throw new PersistentException("Input bean get error.", e.getTargetException());
                    }
                    try {
                        statement.addBatch();
                    } catch (SQLException e) {
                        throw new PersistentException("SQL add batch error : " + sql, e);
                    }
                    if (i == imax - 1) {
                        if (isBatch) {
                            result = -1;
                        } else {
                            int updateCount = 0;
                            int[] updateCounts = null;
                            try {
                                updateCounts = statement.executeBatch();
                            } catch (SQLException e) {
                                throw new PersistentException("SQL execute error : " + sql, e);
                            }
                            for (int j = 0; j < updateCounts.length; j++) {
                                if (updateCounts[j] > 0) {
                                    updateCount += updateCounts[j];
                                }
                            }
                            if (updateCount == 0) {
                                try {
                                    updateCount = statement.getUpdateCount();
                                } catch (SQLException e) {
                                }
                            }
                            result = updateCount;
                        }
                    }
                } else {
                    setObject(statement, i + 1, bean);
                    if (i == imax - 1) {
                        if (isBatch) {
                            try {
                                statement.addBatch();
                            } catch (SQLException e) {
                                throw new PersistentException("SQL add batch error : " + sql, e);
                            }
                            result = -1;
                        } else {
                            try {
                                result = statement.executeUpdate();
                            } catch (SQLException e) {
                                throw new PersistentException("SQL execute error : " + sql, e);
                            }
                        }
                    }
                }
            }
            return result;
        }
    } else {
        try {
            if (input != null) {
                if (inputProps != null) {
                    for (int i = 0, imax = inputProps.size(); i < imax; i++) {
                        Object param = propertyAccess.get(input, inputProps.get(i).toString());
                        setObject(statement, i + 1, param);
                    }
                } else {
                    if (input instanceof Map) {
                        Iterator propItr = ((Map) input).keySet().iterator();
                        int i = 0;
                        while (propItr.hasNext()) {
                            Object param = propertyAccess.get(input, propItr.next().toString());
                            setObject(statement, ++i, param);
                        }
                    } else {
                        setObject(statement, 1, input);
                    }
                }
            } else {
                if (inputProps != null) {
                    for (int i = 0, imax = inputProps.size(); i < imax; i++) {
                        setObject(statement, i + 1, null);
                    }
                } else {
                    int parameterCount = 0;
                    try {
                        ParameterMetaData paramMetaData = statement.getParameterMetaData();
                        parameterCount = paramMetaData.getParameterCount();
                    } catch (SQLException e) {
                        throw new PersistentException("Illegal sql : " + sql, e);
                    } catch (IncompatibleClassChangeError e) {
                    }
                    if (parameterCount != 0) {
                        setObject(statement, 1, input);
                    }
                }
            }
        } catch (NoSuchPropertyException e) {
            throw new PersistentException("Input bean get error.", e);
        } catch (InvocationTargetException e) {
            throw new PersistentException("Input bean get error.", e.getTargetException());
        }
        if (isBatch) {
            try {
                statement.addBatch();
            } catch (SQLException e) {
                throw new PersistentException("SQL add batch error : " + sql, e);
            }
            return -1;
        } else {
            try {
                return statement.executeUpdate();
            } catch (SQLException e) {
                throw new PersistentException("SQL execute error : " + sql, e);
            }
        }
    }
}
Also used : DataSet(jp.ossc.nimbus.beans.dataset.DataSet) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) InvocationTargetException(java.lang.reflect.InvocationTargetException) RecordList(jp.ossc.nimbus.beans.dataset.RecordList) Iterator(java.util.Iterator) NoSuchPropertyException(jp.ossc.nimbus.beans.NoSuchPropertyException) RecordList(jp.ossc.nimbus.beans.dataset.RecordList) ArrayList(java.util.ArrayList) List(java.util.List) NestedProperty(jp.ossc.nimbus.beans.NestedProperty) Property(jp.ossc.nimbus.beans.Property) NestedProperty(jp.ossc.nimbus.beans.NestedProperty) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) ParameterMetaData(java.sql.ParameterMetaData)

Aggregations

DataSet (jp.ossc.nimbus.beans.dataset.DataSet)13 RecordList (jp.ossc.nimbus.beans.dataset.RecordList)8 Record (jp.ossc.nimbus.beans.dataset.Record)6 InvocationTargetException (java.lang.reflect.InvocationTargetException)5 Iterator (java.util.Iterator)5 Header (jp.ossc.nimbus.beans.dataset.Header)5 PropertySchemaDefineException (jp.ossc.nimbus.beans.dataset.PropertySchemaDefineException)5 HashMap (java.util.HashMap)4 List (java.util.List)4 Map (java.util.Map)4 NoSuchPropertyException (jp.ossc.nimbus.beans.NoSuchPropertyException)4 Property (jp.ossc.nimbus.beans.Property)4 ConvertException (jp.ossc.nimbus.util.converter.ConvertException)4 SQLException (java.sql.SQLException)3 ArrayList (java.util.ArrayList)3 NestedProperty (jp.ossc.nimbus.beans.NestedProperty)3 LinkedHashMap (java.util.LinkedHashMap)2 HttpClientFactory (jp.ossc.nimbus.service.http.HttpClientFactory)2 HttpRequest (jp.ossc.nimbus.service.http.HttpRequest)2 HttpClientImpl (jp.ossc.nimbus.service.http.httpclient.HttpClientFactoryService.HttpClientImpl)2