From 3742a9bc02039284ae377e1b44e83c1465f92f10 Mon Sep 17 00:00:00 2001 From: Arnaud Jelmoni <arnaud.jelmoni@keyconsulting.fr> Date: Thu, 11 Mar 2021 09:44:32 +0000 Subject: [PATCH] Reafact --- .../archiving/snap/api/DataBaseAPI.java | 2067 +++-------------- .../snap/api/manager/SnapManagerApi.java | 21 +- .../snap/api/tools/AttributeSupport.java | 378 --- .../snap/api/tools/BlobSpectrum.java | 104 - .../archiving/snap/api/tools/ScalarEvent.java | 426 ---- .../archiving/snap/api/tools/SnapConst.java | 2 +- .../snap/api/tools/SnapImageEvent_RO.java | 133 -- .../snap/api/tools/SnapImageEvent_RW.java | 180 -- .../snap/api/tools/SnapScalarEvent_RO.java | 83 - .../snap/api/tools/SnapScalarEvent_RW.java | 98 - .../snap/api/tools/SnapScalarEvent_WO.java | 81 - .../snap/api/tools/SnapSpectrumEvent_RO.java | 114 - .../snap/api/tools/SnapSpectrumEvent_RW.java | 482 ---- .../snap/api/tools/TangoJAVAUtils.java | 164 ++ .../archiving/snap/api/DataBaseAPITest.java | 17 +- 15 files changed, 461 insertions(+), 3889 deletions(-) delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/AttributeSupport.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/BlobSpectrum.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/ScalarEvent.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RO.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RW.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RO.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RW.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_WO.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RO.java delete mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RW.java create mode 100644 src/main/java/fr/soleil/archiving/snap/api/tools/TangoJAVAUtils.java diff --git a/src/main/java/fr/soleil/archiving/snap/api/DataBaseAPI.java b/src/main/java/fr/soleil/archiving/snap/api/DataBaseAPI.java index 9c73eb9..9ee352d 100644 --- a/src/main/java/fr/soleil/archiving/snap/api/DataBaseAPI.java +++ b/src/main/java/fr/soleil/archiving/snap/api/DataBaseAPI.java @@ -195,7 +195,10 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.StringTokenizer; +import java.util.stream.Collectors; +import org.jdbi.v3.core.Handle; +import org.jdbi.v3.core.statement.Query; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -206,7 +209,6 @@ import fr.esrf.TangoDs.TangoConst; import fr.soleil.archiving.common.api.ConnectionFactory; import fr.soleil.archiving.common.api.exception.ArchivingException; import fr.soleil.archiving.common.api.tools.GlobalConst; -import fr.soleil.archiving.common.api.tools.StringFormater; import fr.soleil.archiving.snap.api.tools.SnapAttributeExtract; import fr.soleil.archiving.snap.api.tools.SnapAttributeHeavy; import fr.soleil.archiving.snap.api.tools.SnapAttributeLight; @@ -215,10 +217,10 @@ import fr.soleil.archiving.snap.api.tools.SnapContext; import fr.soleil.archiving.snap.api.tools.Snapshot; import fr.soleil.archiving.snap.api.tools.SnapshotLight; import fr.soleil.archiving.snap.api.tools.SnapshotingException; +import fr.soleil.archiving.snap.api.tools.TangoJAVAUtils; import fr.soleil.database.connection.AbstractDataBaseConnector; import fr.soleil.database.connection.DataBaseParameters; import fr.soleil.database.connection.DataBaseParameters.DataBaseType; -import fr.soleil.lib.project.math.MathConst; /** * <b>Description : </b> This class hides the loading of drivers, the @@ -288,7 +290,6 @@ public class DataBaseAPI { try { connector = ConnectionFactory.connect(params); } catch (ArchivingException e1) { - // TODO Auto-generated catch block e1.printStackTrace(); } } @@ -418,20 +419,15 @@ public class DataBaseAPI { StringBuilder selectStringBuilder = new StringBuilder(); try { // Preparing statement... - selectStringBuilder.append("SELECT ").append(SnapConst.ID).append(" FROM ").append(table_name) - .append(" WHERE "); + selectStringBuilder.append("SELECT " + SnapConst.ID + " FROM " + table_name + " WHERE "); if (params.getDbType() == DataBaseType.ORACLE) { - selectStringBuilder.append("LOWER(").append(SnapConst.fullName).append(") like LOWER(?)"); + selectStringBuilder.append("LOWER(" + SnapConst.fullName + ") like LOWER(?)"); } else { - selectStringBuilder.append(SnapConst.fullName).append(" like ?"); + selectStringBuilder.append(SnapConst.fullName + " like ?"); } - // if (m_dataSource == null) { conn = connector.getConnection(); ps_get_att_id = conn.prepareStatement(selectStringBuilder.toString()); - // } else { - // conn = m_dataSource.getConnection(); - // ps_get_att_id = conn.prepareStatement(selectString); - // } + final String field1 = att_name.trim(); ps_get_att_id.setString(1, field1); rset = ps_get_att_id.executeQuery(); @@ -521,51 +517,7 @@ public class DataBaseAPI { return res; } - /** - * This method retrives from the the database, the list of all registered - * contexts (or 'snap-patterns) - * - * @return The list of all registered contexts (or 'snap-patterns) - * @throws SnapshotingException - */ - public List<SnapContext> getAllContext() throws SnapshotingException { - List<SnapContext> contextList = new ArrayList<SnapContext>(); - String query = ""; - Statement stmt = null; - String select_field = String.join(", ", SnapConst.TAB_CONTEXT); - final String table_1 = getDbSchema() + "." + SnapConst.CONTEXT; - final String clause_1 = " ORDER BY " + SnapConst.ID_CONTEXT; - query = "SELECT " + select_field + " FROM " + table_1 + clause_1; - - ResultSet resultSet = null; - Connection conn = null; - try { - conn = connector.getConnection(); - stmt = conn.createStatement(); - resultSet = stmt.executeQuery(query.toString()); - while (resultSet.next()) { - final SnapContext snapContext = new SnapContext(); - snapContext.setId(resultSet.getInt(1)); - snapContext.setCreation_date(resultSet.getDate(2)); - snapContext.setName(resultSet.getString(3)); - snapContext.setAuthor_name(resultSet.getString(4)); - snapContext.setReason(resultSet.getString(5)); - snapContext.setDescription(resultSet.getString(6)); - contextList.add(snapContext); - } - return contextList; - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; - final String reason = "Failed while executing DataBaseAPI.getAllContext() method..."; - final String desc = ""; - throw new SnapshotingException(message, reason, query.toString(), ErrSeverity.PANIC, desc, "", e); - } finally { - closeResultSet(resultSet); - closeStatement(stmt); - closeConnection(conn); - } - } /** * This method retrives from the the database, the list of all registered @@ -578,129 +530,24 @@ public class DataBaseAPI { * @throws SnapshotingException */ public List<SnapContext> getContext(final String clause, final int id_context) throws SnapshotingException { - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - Statement stmt = null; - List<SnapContext> contextList = new ArrayList<SnapContext>(); - String query = ""; String select_field = String.join(", ", SnapConst.TAB_CONTEXT); // Choix de la table dans laquelle effectuer la requete SQL. final String table_1 = getDbSchema() + "." + SnapConst.CONTEXT; // Affichage des resusltats par ordre croissant d'ID du context. - final String clause_1 = " ORDER BY " + SnapConst.ID_CONTEXT; - query = "SELECT " + select_field + " FROM " + table_1; - try { - conn = connector.getConnection(); - if (id_context != -1) { - // Cas ou l'id_context est donne. - query = query + clause; - - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, id_context); - resultSet = preparedStatement.executeQuery(); - - // Gets the result of the query - while (resultSet.next()) { - final SnapContext snapContext = new SnapContext(); - snapContext.setId(resultSet.getInt(1)); - snapContext.setCreation_date(resultSet.getDate(2)); - snapContext.setName(resultSet.getString(3)); - snapContext.setAuthor_name(resultSet.getString(4)); - snapContext.setReason(resultSet.getString(5)); - snapContext.setDescription(resultSet.getString(6)); - contextList.add(snapContext); - } - } else { - // cas ou l'id du context n'est pas donne. - - if (clause.equals("")) { - query = query + clause_1; - } else { - query = query + clause + clause_1; - } - - stmt = conn.createStatement(); - resultSet = stmt.executeQuery(query.toString()); - while (resultSet.next()) { - final SnapContext snapContext = new SnapContext(); - snapContext.setId(resultSet.getInt(1)); - snapContext.setCreation_date(resultSet.getDate(2)); - snapContext.setName(resultSet.getString(3)); - snapContext.setAuthor_name(resultSet.getString(4)); - snapContext.setReason(resultSet.getString(5)); - snapContext.setDescription(resultSet.getString(6)); - contextList.add(snapContext); - } + final String orderBy = " ORDER BY " + SnapConst.ID_CONTEXT; + + String query = "SELECT " + select_field + " FROM " + table_1; + + try (Handle handle = connector.getJdbi().open()) { + Query queryBinder = handle.createQuery(query+clause+orderBy); + if(id_context != -1) { + queryBinder.bind(0,id_context); } - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; - final String reason = "Failed while executing DataBaseAPI.getContext() method..."; - final String desc = ""; - final String queryDebug = query.toString() + " => " + id_context; - throw new SnapshotingException(message, reason, queryDebug, ErrSeverity.PANIC, desc, "", e); - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeStatement(stmt); - closeConnection(conn); + return queryBinder.map((rs, ctx) -> new SnapContext(rs.getString(SnapConst.author), + rs.getString(SnapConst.name), rs.getInt(SnapConst.ID_CONTEXT), rs.getDate(SnapConst.time), + rs.getString(SnapConst.reason), rs.getString(SnapConst.description))).list(); } - return contextList; - } - - /** - * ************************************************************************ - * <b>Description : </b> Gets all snapshots from a given context - * - * @return array of strings - * @throws SnapshotingException - * @see SnapshotLight - * ******************************************************************** - * * **** - */ - public List<SnapshotLight> getContextAssociatedSnapshots(final int id_context) throws SnapshotingException { - final List<SnapshotLight> associatedSnapshots = new ArrayList<SnapshotLight>(); - PreparedStatement preparedStatement = null; - ResultSet rset = null; - - // Create and execute the SQL query string - String query; - final String select_field = SnapConst.ID_SNAP + ", " +SnapConst.time; - final String table_1 = getDbSchema() + "." + SnapConst.SNAPSHOT; - final String clause_2 = SnapConst.SNAPSHOT + "." + SnapConst.TAB_SNAP[1] + " = ?"; - - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_2; - Connection conn = null; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, id_context); - rset = preparedStatement.executeQuery(); - - // Gets the result of the query - while (rset.next()) { - final SnapshotLight snapShotLight = new SnapshotLight(); - snapShotLight.setId_snap(rset.getInt(1)); - snapShotLight.setSnap_date(rset.getTimestamp(2)); - // commentaire - associatedSnapshots.add(snapShotLight); - } - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.ERROR_RET_SNAP; - final String reason = "Failed while executing DataBaseAPI.getContextAssociatedSnapshots() method..."; - final String desc = ""; - final String queryDebug = query + " => " + id_context; - throw new SnapshotingException(message, reason, queryDebug, ErrSeverity.PANIC, desc, "", e); - } finally { - closeResultSet(rset); - closeStatement(preparedStatement); - closeConnection(conn); - } - - // Returns the names list - - return associatedSnapshots; } /** @@ -717,111 +564,29 @@ public class DataBaseAPI { */ public List<SnapshotLight> getContextAssociatedSnapshots(final String clause, final int id_context, final int id_snap) throws SnapshotingException { - final List<SnapshotLight> associatedSnapshots = new ArrayList<SnapshotLight>(); - // First connect with the database - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet rset = null; - Statement stmt = null; - // Create and execute the SQL query string String query; final String select_field = SnapConst.ID_SNAP + ", " + SnapConst.time + ", " + SnapConst.snap_comment; // recuperation de la table des snapshot. final String table_1 = getDbSchema() + "." + SnapConst.SNAPSHOT; - final String clause_4 = " ORDER BY " + SnapConst.ID_SNAP; + final String orderBy = " ORDER BY " + SnapConst.ID_SNAP; + + query = "SELECT " + select_field + " FROM " + table_1 + clause + orderBy; + + try (Handle handle = connector.getJdbi().open()) { + Query queryBinder = handle.createQuery(query); + if (id_context != -1 && id_snap != -1) { + queryBinder.bind(0, id_snap); + queryBinder.bind(1, id_context); + } else if (id_context != -1) { + queryBinder.bind(0, id_context); + } else if (id_snap != -1) { + queryBinder.bind(0, id_snap); + } + return queryBinder.map((rs, ctx) -> new SnapshotLight(rs.getInt(SnapConst.ID_SNAP), + rs.getTimestamp(SnapConst.time), rs.getString(SnapConst.snap_comment))).list(); + } - query = "SELECT " + select_field + " FROM " + table_1 + clause; - try { - conn = connector.getConnection(); - if (id_context != -1 && id_snap != -1) { - // Cas ou l'id_context et l'id_snap sont donnes. - query = query + clause_4; - - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, id_snap); - preparedStatement.setInt(2, id_context); - rset = preparedStatement.executeQuery(); - - // Gets the result of the query - while (rset.next()) { - final SnapshotLight snapShotLight = new SnapshotLight(); - snapShotLight.setId_snap(rset.getInt(1)); - snapShotLight.setSnap_date(rset.getTimestamp(2)); - snapShotLight.setComment(rset.getString(3)); // todo - // commentaire - associatedSnapshots.add(snapShotLight); - } - // preparedStatement.close(); - - } else if (id_context != -1) { - // Cas ou l'id_context est donne. - query = query + clause_4; - preparedStatement = conn.prepareStatement(query); - - preparedStatement.setInt(1, id_context); - rset = preparedStatement.executeQuery(); - - // Gets the result of the query - while (rset.next()) { - final SnapshotLight snapShotLight = new SnapshotLight(); - snapShotLight.setId_snap(rset.getInt(1)); - snapShotLight.setSnap_date(rset.getTimestamp(2)); - snapShotLight.setComment(rset.getString(3)); // todo - // commentaire - associatedSnapshots.add(snapShotLight); - } - // preparedStatement.close(); - } else if (id_snap != -1) { - // Cas ou l'id_snap est donne. - query = query + clause_4; - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, id_snap); - rset = preparedStatement.executeQuery(); - - // Gets the result of the query - while (rset.next()) { - final SnapshotLight snapShotLight = new SnapshotLight(); - snapShotLight.setId_snap(rset.getInt(1)); - snapShotLight.setSnap_date(rset.getTimestamp(2)); - snapShotLight.setComment(rset.getString(3)); // todo - // commentaire - associatedSnapshots.add(snapShotLight); - } - } else { - // Cas ou ni l'id_context ni l'id_snap ne sont donnes. - query = query + clause_4; - - stmt = conn.createStatement(); - - rset = stmt.executeQuery(query.toString()); - while (rset.next()) { - final SnapshotLight snapShotLight = new SnapshotLight(); - snapShotLight.setId_snap(rset.getInt(1)); - snapShotLight.setSnap_date(rset.getTimestamp(2)); - snapShotLight.setComment(rset.getString(3)); // todo - // commentaire - associatedSnapshots.add(snapShotLight); - } - } - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.ERROR_RET_SNAP; - final String reason = "Failed while executing DataBaseAPI.getContextAssociatedSnapshots() method..."; - final String desc = ""; - throw new SnapshotingException(message, reason, query.toString(), ErrSeverity.PANIC, desc, "", e); - } catch (final Exception e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.ERROR_RET_SNAP; - final String reason = "Failed while executing DataBaseAPI.getContextAssociatedSnapshots() method..."; - final String desc = ""; - throw new SnapshotingException(message, reason, query.toString(), ErrSeverity.PANIC, desc, "", e); - } finally { - closeResultSet(rset); - closeStatement(preparedStatement); - closeStatement(stmt); - closeConnection(conn); - } - // Returns the names list - return associatedSnapshots; } @@ -870,13 +635,20 @@ public class DataBaseAPI { return res; } - private void selectNumericScalarRO(final List<SnapAttributeExtract> attributes, final String selectRO, - final String where) throws SnapshotingException, SQLException { + private void selectScalarRO(final List<SnapAttributeExtract> attributes, int snapID, String table) + throws SnapshotingException, SQLException { + if(attributes.isEmpty()) { + return; + } Connection conn = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; // SELECT id_att, value FROM t_sc_num_1val WHERE id_snap = ? - final String query = selectRO + getDbSchema() + "." + SnapConst.T_SC_NUM_1VAL + where; + final String query = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.value + " FROM " + getDbSchema() + "." + + table + " WHERE " + SnapConst.ID_SNAP + "=" + snapID + " AND " + SnapConst.ID_ATT + + " IN (" + String.join(", ", + attributes.stream().map(s -> String.valueOf(s.getAttId())).collect(Collectors.toList())) + + ")"; try { conn = connector.getConnection(); preparedStatement = conn.prepareStatement(query); @@ -885,7 +657,8 @@ public class DataBaseAPI { int attId = resultSet.getInt(1); final SnapAttributeExtract snapAttributeExtract = attributes.stream() .filter(att -> att.getAttId() == attId).findFirst().get(); - snapAttributeExtract.setValue(castResultSetAsObject(snapAttributeExtract.getDataType(), resultSet, 2), + snapAttributeExtract.setValue( + TangoJAVAUtils.castResultSetAsObject(snapAttributeExtract.getDataType(), resultSet, 2), Boolean.valueOf(resultSet.wasNull())); } } finally { @@ -895,17 +668,27 @@ public class DataBaseAPI { } } - private boolean isNullOrNaN(final String value) { - return ((value == null) || value.isEmpty() || "null".equals(value) || "NaN".equalsIgnoreCase(value)); - } - private void selectRO(final List<SnapAttributeExtract> attributes, final String selectRO, final String where, + + private void selectRO(final List<SnapAttributeExtract> attributes, int snapID, final String tableName) throws SnapshotingException, SQLException { - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; + + Connection conn = null; + PreparedStatement preparedStatement = null; + ResultSet resultSet = null; + + List<String> scpectrumROAttId = attributes.stream() + .filter(s -> s.getDataFormat() == AttrDataFormat._SPECTRUM + && (s.getWritable() == AttrWriteType._READ || s.getWritable() == AttrWriteType._WRITE)) + .map(s -> String.valueOf(s.getAttId())).collect(Collectors.toList()); + + if (scpectrumROAttId.isEmpty()) { + return; + } // SELECT id_att, value FROM t_sp_1val WHERE id_snap = ? - final String query = selectRO + getDbSchema() + "." + tableName + where; + final String query = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.value + " FROM " + getDbSchema() + "." + + tableName + " WHERE " + SnapConst.ID_SNAP + "=" + snapID + " AND " + SnapConst.ID_ATT + " IN (" + + String.join(", ", scpectrumROAttId) + ")"; try { conn = connector.getConnection(); preparedStatement = conn.prepareStatement(query); @@ -918,7 +701,7 @@ public class DataBaseAPI { final Clob readClob = resultSet.getClob(2); if (readClob != null) { final String value = readClob.getSubString(1, (int) readClob.length()); - NullableData<?, ?> data = getSpectrumValue(value, null, snapAttributeExtract.getDataType(), + NullableData<?> data = getSpectrumValue(value, null, snapAttributeExtract.getDataType(), false); snapAttributeExtract.setValue(data.getValue(), data.getNullElements()); } @@ -930,14 +713,24 @@ public class DataBaseAPI { } } - private void selectRW(final List<SnapAttributeExtract> attributes, final String selectRW, final String where, + private void selectRW(final List<SnapAttributeExtract> attributes, final int snapID, final String tableName) throws SnapshotingException, SQLException { Connection conn = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; // SELECT id_att, read_value, write_value, dim_x FROM // t_sp_2val WHERE id_snap = ? - final String query = selectRW + getDbSchema() + "." + tableName + where; + + List<String> scpectrumRWAttId = attributes.stream().filter(s -> s.getDataFormat() == AttrDataFormat._SPECTRUM + && (s.getWritable() == AttrWriteType._READ_WITH_WRITE || s.getWritable() == AttrWriteType._READ_WRITE)) + .map(s -> String.valueOf(s.getAttId())).collect(Collectors.toList()); + if (scpectrumRWAttId.isEmpty()) { + return; + } + + final String query = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.read_value + "," + SnapConst.write_value + + "," + SnapConst.dim_x + " FROM " + getDbSchema() + "." + tableName + " WHERE " + SnapConst.ID_SNAP + + "=" + snapID + " AND " + SnapConst.ID_ATT + " IN (" + String.join(", ", scpectrumRWAttId) + ")"; try { conn = connector.getConnection(); preparedStatement = conn.prepareStatement(query); @@ -957,7 +750,7 @@ public class DataBaseAPI { if (writeClob != null) { writeValue = writeClob.getSubString(1, (int) writeClob.length()); } - NullableData<?, ?> data = getSpectrumValue(readValue, writeValue, + NullableData<?> data = getSpectrumValue(readValue, writeValue, snapAttributeExtract.getDataType(), true); snapAttributeExtract.setValue(data.getValue(), data.getNullElements()); snapAttributeExtract.setDimX(resultSet.getInt(4)); @@ -969,14 +762,21 @@ public class DataBaseAPI { } } - private void selectNumericScalarRW(final List<SnapAttributeExtract> attributes, final String selectRW, - final String where) throws SnapshotingException, SQLException { + private void selectScalarRW(final List<SnapAttributeExtract> attributes, int snapID, String table) + throws SnapshotingException, SQLException { + if (attributes.isEmpty()) { + return; + } Connection conn = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; // SELECT id_att, read_value, write_value FROM t_sc_num_2val WHERE // id_snap = ? - final String query = selectRW + getDbSchema() + "." + SnapConst.T_SC_NUM_2VAL + where; + final String query = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.read_value + "," + SnapConst.write_value + + " FROM " + getDbSchema() + "." + table + " WHERE " + SnapConst.ID_SNAP + "=" + snapID + " AND " + + SnapConst.ID_ATT + " IN (" + String.join(", ", + attributes.stream().map(s -> String.valueOf(s.getAttId())).collect(Collectors.toList())) + + ")"; try { conn = connector.getConnection(); preparedStatement = conn.prepareStatement(query); @@ -986,12 +786,14 @@ public class DataBaseAPI { final SnapAttributeExtract snapAttributeExtract = attributes.stream() .filter(att -> att.getAttId() == attId).findFirst().get(); // fill data - final Object value = initPrimitiveArray(snapAttributeExtract.getDataType(), 2); + final Object value = TangoJAVAUtils.initPrimitiveArray(snapAttributeExtract.getDataType(), 2); final boolean[] nullElements = new boolean[2]; - Array.set(value, 0, castResultSetAsPrimitive(snapAttributeExtract.getDataType(), resultSet, 2)); + Array.set(value, 0, TangoJAVAUtils.castResultSetAsPrimitive(snapAttributeExtract.getDataType(), + resultSet, 2)); nullElements[0] = resultSet.wasNull(); - Array.set(value, 1, castResultSetAsPrimitive(snapAttributeExtract.getDataType(), resultSet, 3)); + Array.set(value, 1, TangoJAVAUtils.castResultSetAsPrimitive(snapAttributeExtract.getDataType(), + resultSet, 3)); nullElements[1] = resultSet.wasNull(); snapAttributeExtract.setValue(value, nullElements); @@ -1004,66 +806,6 @@ public class DataBaseAPI { } } - private void selectStringScalarRO(final List<SnapAttributeExtract> attributes, final String selectRO, - final String where) throws SnapshotingException, SQLException { - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - // SELECT id_att, value FROM t_sc_str_1val WHERE id_snap = ? - final String query = selectRO + getDbSchema() + "." + SnapConst.T_SC_STR_1VAL + where; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - resultSet = preparedStatement.executeQuery(); - while (resultSet.next()) { - for (final SnapAttributeExtract snapAttributeExtract : attributes) { - if (snapAttributeExtract.getAttId() == resultSet.getInt(1)) { - // fill data - snapAttributeExtract.setValue(resultSet.getString(2), Boolean.valueOf(resultSet.wasNull())); - break; - } - } - } - - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - } - - private void selectStringScalarRW(final List<SnapAttributeExtract> attributes, final String selectRW, - final String where) throws SnapshotingException, SQLException { - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - // SELECT id_att, read_value, write_value FROM t_sc_str_2val WHERE - // id_snap = ? - final String query = selectRW + getDbSchema() + "." + SnapConst.T_SC_STR_2VAL + where; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - resultSet = preparedStatement.executeQuery(); - while (resultSet.next()) { - int attId = resultSet.getInt(1); - final SnapAttributeExtract snapAttributeExtract = attributes.stream() - .filter(att -> att.getAttId() == attId).findFirst().get(); - // fill data - final Object[] value = new Object[2]; - final boolean[] nullElements = new boolean[2]; - value[0] = resultSet.getString(2); - nullElements[0] = resultSet.wasNull(); - value[1] = resultSet.getString(3); - nullElements[1] = resultSet.wasNull(); - snapAttributeExtract.setValue(value, nullElements); - } - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - } - /** * Retrieve a snapshot results' * @@ -1074,180 +816,78 @@ public class DataBaseAPI { * The snap ID * @throws SnapshotingException */ - public void getSnapResults(final List<SnapAttributeExtract> attributes, final int snapID) - throws SnapshotingException { - if (attributes.size() <= 6) { - // one sql request per attribute - for (SnapAttributeExtract snapAttributeExtract : attributes) { - snapAttributeExtract = getSnapResult(snapAttributeExtract, snapID); - } - } else { - // one sql request per table - final String selectRO = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.value - + " FROM "; - final String selectRW = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.read_value + "," - + SnapConst.write_value + " FROM "; - final String selectRWSpectrum = "SELECT " + SnapConst.ID_ATT + "," + SnapConst.read_value + "," - + SnapConst.write_value + "," + SnapConst.dim_x + " FROM "; - - final String where = " WHERE " + SnapConst.ID_SNAP + "=" + snapID; - try { - // --- Get scalar numeric read only values - selectNumericScalarRO(attributes, selectRO, where); - } catch (final SQLException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } catch (final SnapshotingException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } - try { - // --- Get scalar numeric read write values - selectNumericScalarRW(attributes, selectRW, where); - } catch (final SQLException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } catch (final SnapshotingException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } - try { - // --- Get scalar string read only values - selectStringScalarRO(attributes, selectRO, where); - } catch (final SQLException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } catch (final SnapshotingException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } - try { - // --- Get scalar numeric read write values - selectStringScalarRW(attributes, selectRW, where); - } catch (final SQLException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } catch (final SnapshotingException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } - try { - // --- Get spectrum read values - selectRO(attributes, selectRO, where, SnapConst.T_SP_1VAL); - } catch (final SQLException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } catch (final SnapshotingException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } - try { - // --- Get spectrum read write values - selectRW(attributes, selectRWSpectrum, where, SnapConst.T_SP_2VAL); - } catch (final SQLException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } catch (final SnapshotingException e) { - logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); - } - } - } + public void getSnapResults(final List<SnapAttributeExtract> attributes, final int snapID) + throws SnapshotingException { + + // one sql request per table + + List<SnapAttributeExtract> numericScalarRO = attributes.stream() + .filter(s -> s.getDataFormat() == AttrDataFormat._SCALAR + && s.getDataType() != TangoConst.Tango_DEV_STRING + && (s.getWritable() == AttrWriteType._READ || s.getWritable() == AttrWriteType._WRITE)) + .collect(Collectors.toList()); + + List<SnapAttributeExtract> stringScalarRO = attributes.stream() + .filter(s -> s.getDataFormat() == AttrDataFormat._SCALAR + && s.getDataType() == TangoConst.Tango_DEV_STRING + && (s.getWritable() == AttrWriteType._READ || s.getWritable() == AttrWriteType._WRITE)) + .collect(Collectors.toList()); + + List<SnapAttributeExtract> numericScalarRW = attributes.stream() + .filter(s -> s.getDataFormat() == AttrDataFormat._SCALAR + && s.getDataType() != TangoConst.Tango_DEV_STRING + && (s.getWritable() == AttrWriteType._READ_WITH_WRITE || s.getWritable() == AttrWriteType._READ_WRITE)) + .collect(Collectors.toList()); + + List<SnapAttributeExtract> stringScalarRW = attributes.stream() + .filter(s -> s.getDataFormat() == AttrDataFormat._SCALAR + && s.getDataType() == TangoConst.Tango_DEV_STRING + && (s.getWritable() == AttrWriteType._READ_WITH_WRITE || s.getWritable() == AttrWriteType._READ_WRITE)) + .collect(Collectors.toList()); + + try { + // --- Get scalar numeric read only values + selectScalarRO(numericScalarRO, snapID, SnapConst.T_SC_NUM_1VAL); + } catch (SQLException | SnapshotingException e) { + logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); + } + try { + // --- Get scalar numeric read write values + selectScalarRW(numericScalarRW, snapID, SnapConst.T_SC_NUM_2VAL); + } catch (SQLException | SnapshotingException e) { + logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); + } - private SnapAttributeExtract getSnapResult(final SnapAttributeExtract snapAttributeExtract, final int id_snap) - throws SnapshotingException { - final int attID = snapAttributeExtract.getAttId(); - switch (snapAttributeExtract.getDataFormat()) { - case AttrDataFormat._SCALAR: - switch (snapAttributeExtract.getWritable()) { - case AttrWriteType._READ: - case AttrWriteType._WRITE: - NullableData<Object, Boolean> roData = extract_ScalarData_RO(id_snap, attID, - snapAttributeExtract.getDataType()); - snapAttributeExtract.setValue(roData.getValue(), roData.getNullElements()); - break; - case AttrWriteType._READ_WITH_WRITE: - case AttrWriteType._READ_WRITE: - NullableData<Object, boolean[]> rwwData = extract_ScalarData_RW(id_snap, attID, - snapAttributeExtract.getDataType()); - snapAttributeExtract.setValue(rwwData.getValue(), rwwData.getNullElements()); - break; - } - break; - case AttrDataFormat._SPECTRUM: - switch (snapAttributeExtract.getWritable()) { - case AttrWriteType._WRITE: - case AttrWriteType._READ: - NullableData<?, ?> roData = extract_SpectrumData_RO(id_snap, attID, - snapAttributeExtract.getDataType()); - snapAttributeExtract.setValue(roData.getValue(), roData.getNullElements()); - break; - case AttrWriteType._READ_WITH_WRITE: - case AttrWriteType._READ_WRITE: - NullableData<?, ?> rwData = extract_SpectrumData_RW(id_snap, attID, - snapAttributeExtract.getDataType()); - snapAttributeExtract.setValue(rwData.getValue(), rwData.getNullElements()); - snapAttributeExtract.setDimX(getCurrentSpectrumDimX()); - break; - } - break; - case AttrDataFormat._IMAGE: - switch (snapAttributeExtract.getWritable()) { - case AttrWriteType._WRITE: - case AttrWriteType._READ: - NullableData<Object[], boolean[][]> roData = extract_ImageData_RO(id_snap, attID, - snapAttributeExtract.getDataType()); - snapAttributeExtract.setValue(roData.getValue(), roData.getNullElements()); - break; - case AttrWriteType._READ_WITH_WRITE: - case AttrWriteType._READ_WRITE: - NullableData<Object[][], boolean[][][]> rwData = extract_ImageData_RW(id_snap, attID, - snapAttributeExtract.getDataType()); - snapAttributeExtract.setValue(rwData.getValue(), rwData.getNullElements()); - break; - } - break; - } - return snapAttributeExtract; + try { + // --- Get scalar string read only values + selectScalarRO(stringScalarRO, snapID, SnapConst.T_SC_STR_1VAL); + } catch (SQLException | SnapshotingException e) { + logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); + } + + try { + // --- Get scalar numeric read write values + selectScalarRW(stringScalarRW, snapID, SnapConst.T_SC_STR_2VAL); + } catch (SQLException | SnapshotingException e) { + logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); + } + try { + // --- Get spectrum read values + selectRO(attributes, snapID, SnapConst.T_SP_1VAL); + } catch (SQLException | SnapshotingException e) { + logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); + } + try { + // --- Get spectrum read write values + selectRW(attributes, snapID, SnapConst.T_SP_2VAL); + } catch (SQLException | SnapshotingException e) { + logger.error(ERROR_EXTRACTING_SNAPSHOT_DATA, e); + } } - /** - * @param snapID - * @param snapAtt - * @return - * @throws SnapshotingException - */ - private NullableData<Object, Boolean> extract_ScalarData_RO(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - Object value = null; - Boolean nullElements = Boolean.FALSE; - String query = ""; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = SnapConst.value; - final String table_1 = getDbSchema() + "." - + (data_type != TangoConst.Tango_DEV_STRING ? SnapConst.T_SC_NUM_1VAL : SnapConst.T_SC_STR_1VAL); - final String clause_1 = (SnapConst.ID_SNAP) + "=?"; - final String clause_2 = (SnapConst.ID_ATT) + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - Connection conn = null; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - value = castResultSetAsObject(data_type, resultSet, 1); - if (resultSet.wasNull()) { - value = null; - nullElements = Boolean.TRUE; - } - } - } catch (final SQLException e) { - e.printStackTrace(); - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_ScalarData_RO" + "\r\n" - + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - return new NullableData<Object, Boolean>(value, nullElements); - } + public void closeResultSet(final ResultSet resultSet) { if (resultSet == null) { @@ -1261,568 +901,45 @@ public class DataBaseAPI { logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.closeResultSet" + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage()); - } - } - - public void closeStatement(final Statement preparedStatement) { - if (preparedStatement == null) { - return; - } - - try { - preparedStatement.close(); - } catch (final SQLException e) { - e.printStackTrace(); - - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.closeStatement" + "\r\n" - + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage()); - } - } - - private void closeConnection(final Connection conn) { - if (conn == null) { - return; - } - - try { - conn.close(); - } catch (final SQLException e) { - e.printStackTrace(); - - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.closeConnection" + "\r\n" - + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage()); - } - } - - private NullableData<Object, boolean[]> extract_ScalarData_RW(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - Object value = null; - final boolean[] nullElements = new boolean[2]; - String query = ""; - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + SnapConst.read_value + ", " + SnapConst.write_value; - final String table_1 = getDbSchema() + "." - + (data_type != TangoConst.Tango_DEV_STRING ? SnapConst.T_SC_NUM_2VAL : SnapConst.T_SC_STR_2VAL); - final String clause_1 = (SnapConst.ID_SNAP) + "=?"; - final String clause_2 = (SnapConst.ID_ATT) + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - value = initPrimitiveArray(data_type, 2); - Array.set(value, 0, castResultSetAsPrimitive(data_type, resultSet, 1)); - if (resultSet.wasNull()) { - nullElements[0] = true; - } - Array.set(value, 1, castResultSetAsPrimitive(data_type, resultSet, 2)); - if (resultSet.wasNull()) { - nullElements[1] = true; - } - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_ScalarData_RW" + "\r\n" - + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - return new NullableData<Object, boolean[]>(value, nullElements); - } - - - - private NullableData<?, ?> extract_SpectrumData_RO(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - if (params.getDbType() == DataBaseType.MYSQL) { - return extract_SpectrumData_RO_MySQL(snapID, snapAtt, data_type); - } else { - return extract_SpectrumData_RO_Oracle(snapID, snapAtt, data_type); - } - } - - /** - * @param snapID - * @param snapAtt - * @return - * @throws SnapshotingException - */ - private NullableData<?, ?> extract_SpectrumData_RO_Oracle(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - String query = ""; - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + SnapConst.value; - final String table_1 = getDbSchema() + "." + SnapConst.T_SP_1VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - - String readString = null; - - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - final Clob readClob = resultSet.getClob(1); - if (resultSet.wasNull()) { - readString = null; - } else { - readString = readClob.getSubString(1, (int) readClob.length()); - } - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_SpectrumData_RO_Oracle" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - return getSpectrumValue(readString, null, data_type, false); - } - - /** - * @param snapID - * @param snapAtt - * @return - * @throws SnapshotingException - */ - private NullableData<?, ?> extract_SpectrumData_RO_MySQL(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - String value = "NaN"; - String query = ""; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - Connection conn = null; - final String select_field = SnapConst.value; - final String select_field2 = "CAST(" + select_field + " AS CHAR)"; - final String table_1 = getDbSchema() + "." + SnapConst.T_SP_1VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field2 + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - value = resultSet.getString(1); - if (resultSet.wasNull()) { - value = null; - } - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_SpectrumData_RO_MySQL" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - return getSpectrumValue(value, null, data_type, false); - } - - private NullableData<?, ?> extract_SpectrumData_RW(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - if (params.getDbType() == DataBaseType.MYSQL) { - return extract_SpectrumData_RW_MySQL(snapID, snapAtt, data_type); - } else { - return extract_SpectrumData_RW_Oracle(snapID, snapAtt, data_type); - } - } - - private NullableData<?, ?> extract_SpectrumData_RW_MySQL(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - String read_value = "NaN"; - String write_value = "NaN"; - String query = ""; - Connection conn = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = "CAST(" + SnapConst.read_value + " AS CHAR)" + ", " + "CAST(" + SnapConst.write_value - + " AS CHAR)" + ", " + SnapConst.dim_x; - final String table_1 = getDbSchema() + "." + SnapConst.T_SP_2VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - read_value = resultSet.getString(1); - if (resultSet.wasNull()) { - read_value = null; - } - write_value = resultSet.getString(2); - if (resultSet.wasNull()) { - write_value = null; - } - final int dim_x = resultSet.getInt(3); - setCurrentSpectrumDimX(dim_x); - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_SpectrumData_RW_MySQL" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - return getSpectrumValue(read_value, write_value, data_type, true); - } - - private NullableData<?, ?> extract_SpectrumData_RW_Oracle(final int snapID, final int snapAtt, final int data_type) - throws SnapshotingException { - String query = ""; - String readString = null, writeString = null; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + SnapConst.read_value + ", " + SnapConst.write_value + ", " + SnapConst.dim_x; - - final String table_1 = getDbSchema() + "." + SnapConst.T_SP_2VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - - Connection conn = null; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - final Clob readClob = resultSet.getClob(1); - if (resultSet.wasNull()) { - readString = null; - } else { - readString = readClob.getSubString(1, (int) readClob.length()); - } - - final Clob writeClob = resultSet.getClob(2); - if (resultSet.wasNull()) { - writeString = null; - } else { - writeString = writeClob.getSubString(1, (int) writeClob.length()); - } - - final int dim_x = resultSet.getInt(3); - setCurrentSpectrumDimX(dim_x); - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_SpectrumData_RW_Oracle" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - - return getSpectrumValue(readString, writeString, data_type, true); - } - - private NullableData<Object[], boolean[][]> extract_ImageData_RO(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - if (params.getDbType() == DataBaseType.MYSQL) { - return extract_ImageData_RO_MySQL(snapID, snapAtt, data_type); - } else { - return extract_ImageData_RO_Oracle(snapID, snapAtt, data_type); - } - } - - private NullableData<Object[][], boolean[][][]> extract_ImageData_RW(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - if (params.getDbType() == DataBaseType.MYSQL) { - return extract_ImageData_RW_MySQL(snapID, snapAtt, data_type); - } else { - return extract_ImageData_RW_Oracle(snapID, snapAtt, data_type); - } - } - - /** - * @param snapID - * @param snapAtt - * @return - * @throws SnapshotingException - */ - private NullableData<Object[], boolean[][]> extract_ImageData_RO_MySQL(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - String value = null; - String query = ""; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + SnapConst.value; - final String table_1 = getDbSchema() + "." + SnapConst.T_IM_1VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - Connection conn = null; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - value = resultSet.getString(1); - if (resultSet.wasNull()) { - value = null; - } - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_ImageData_RO_MySQL" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - - if (value != null) { - return getImageValue(value, data_type); - } else { - return null; - } - } - - /** - * @param snapID - * @param snapAtt - * @return - * @throws SnapshotingException - */ - private NullableData<Object[], boolean[][]> extract_ImageData_RO_Oracle(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - String query = ""; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + SnapConst.value; - final String table_1 = getDbSchema() + "." + SnapConst.T_IM_1VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - - String readString = null; - Connection conn = null; - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - final Clob readClob = resultSet.getClob(1); - if (resultSet.wasNull()) { - readString = null; - } else { - readString = readClob.getSubString(1, (int) readClob.length()); - } - } - } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_ImageData_RO_Oracle" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - - if (readString != null) { - return getImageValue(readString, data_type); - } else { - return null; + + "\t Description : \t " + e.getMessage()); } } - private NullableData<Object[][], boolean[][][]> extract_ImageData_RW_MySQL(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - final Object[][] imageValueRW = new Object[2][]; - final boolean[][][] nullElements = new boolean[2][][]; + public void closeStatement(final Statement preparedStatement) { + if (preparedStatement == null) { + return; + } - String readValue = null; - String writeValue = null; - String query = ""; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + "CAST(" + SnapConst.read_value + " AS CHAR)" + ", " + "CAST(" - + SnapConst.write_value + " AS CHAR)"; - final String table_1 = getDbSchema() + "." + SnapConst.T_IM_2VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - Connection conn = null; try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - readValue = resultSet.getString(1); - if (resultSet.wasNull()) { - readValue = null; - } - writeValue = resultSet.getString(2); - if (resultSet.wasNull()) { - writeValue = null; - } - } + preparedStatement.close(); } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_ImageData_RW_MySQL" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } - - if (readValue == null) { - imageValueRW[0] = null; - nullElements[0] = null; - } else { - NullableData<Object[], boolean[][]> data = getImageValue(readValue, data_type); - imageValueRW[0] = data.getValue(); - nullElements[0] = data.getNullElements(); - } + e.printStackTrace(); - if (writeValue == null) { - imageValueRW[1] = null; - nullElements[1] = null; - } else { - NullableData<Object[], boolean[][]> data = getImageValue(writeValue, data_type); - imageValueRW[1] = data.getValue(); - nullElements[1] = data.getNullElements(); + logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.closeStatement" + "\r\n" + + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" + + "\t Description : \t " + e.getMessage()); } - - return new NullableData<Object[][], boolean[][][]>(imageValueRW, nullElements); } - private NullableData<Object[][], boolean[][][]> extract_ImageData_RW_Oracle(final int snapID, final int snapAtt, - final int data_type) throws SnapshotingException { - final Object[][] imageValueRW = new Object[2][]; - final boolean[][][] nullElements = new boolean[2][][]; - - String query = ""; - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - String select_field = ""; - select_field = select_field + SnapConst.read_value + ", " + SnapConst.write_value; - final String table_1 = getDbSchema() + "." + SnapConst.T_IM_2VAL; - final String clause_1 = SnapConst.ID_SNAP + "=?"; - final String clause_2 = SnapConst.ID_ATT + "=?"; - query = "SELECT " + select_field + " FROM " + table_1 + " WHERE " + clause_1 + " AND " + clause_2; - - String readString = null; - String writeString = null; + private void closeConnection(final Connection conn) { + if (conn == null) { + return; + } - Connection conn = null; try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setInt(1, snapID); - preparedStatement.setInt(2, snapAtt); - - resultSet = preparedStatement.executeQuery(); - if (resultSet.next()) { - final Clob readClob = resultSet.getClob(1); - if (resultSet.wasNull()) { - readString = null; - } else { - readString = readClob.getSubString(1, (int) readClob.length()); - } - final Clob writeClob = resultSet.getClob(2); - if (resultSet.wasNull()) { - writeString = null; - } else { - writeString = writeClob.getSubString(1, (int) writeClob.length()); - } - } + conn.close(); } catch (final SQLException e) { - logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.extract_ImageData_RO_Oracle" - + "\r\n" + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" - + "\t Description : \t " + e.getMessage() + "\r\n" + "\t Additional information : \r\n" - + "\t\t Statement : " + query + "\r\n"); - // throw e; - } finally { - closeResultSet(resultSet); - closeStatement(preparedStatement); - closeConnection(conn); - } + e.printStackTrace(); - if (readString == null) { - imageValueRW[0] = null; - nullElements[0] = null; - } else { - NullableData<Object[], boolean[][]> data = getImageValue(readString, data_type); - imageValueRW[0] = data.getValue(); - nullElements[0] = data.getNullElements(); + logger.error("ERROR !! " + "\r\n" + "\t Origin : \t " + "DataBaseAPI.closeConnection" + "\r\n" + + "\t Reason : \t " + getDbSchema().toUpperCase().trim() + "_FAILURE" + "\r\n" + + "\t Description : \t " + e.getMessage()); } + } - if (writeString == null) { - imageValueRW[1] = null; - nullElements[1] = null; - } else { - NullableData<Object[], boolean[][]> data = getImageValue(writeString, data_type); - imageValueRW[1] = data.getValue(); - nullElements[1] = data.getNullElements(); - } - return new NullableData<Object[][], boolean[][][]>(imageValueRW, nullElements); - } - private NullableData<?, ?> getSpectrumValue(final String readStr, final String writeStr, final int dataType, + private NullableData<?> getSpectrumValue(final String readStr, final String writeStr, final int dataType, final boolean returnAsReadWrite) { int readSize = 0, writeSize = 0; StringTokenizer readTokenizer; @@ -1855,15 +972,14 @@ public class DataBaseAPI { boolean[] nullRead = null; boolean[] nullWrite = null; - Object valueArr_read = initPrimitiveArray(dataType, readSize); + Object valueArr_read = TangoJAVAUtils.initPrimitiveArray(dataType, readSize); Object valueArr_write = null; if (returnAsReadWrite) { - valueArr_write = initPrimitiveArray(dataType, writeSize); + valueArr_write = TangoJAVAUtils.initPrimitiveArray(dataType, writeSize); } int i = 0; - if (readTokenizer != null) { nullRead = new boolean[readSize]; while (readTokenizer.hasMoreTokens()) { @@ -1871,84 +987,12 @@ public class DataBaseAPI { if (currentValRead == null || currentValRead.trim().equals("")) { break; } - switch (dataType) { - case TangoConst.Tango_DEV_BOOLEAN: - try { - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, false); - nullRead[i] = true; - } else { - Array.set(valueArr_read, i, ((int) Double.parseDouble(currentValRead)) != 0); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_read, i, "true".equalsIgnoreCase(currentValRead.trim())); - } - break; - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - try { - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, (byte)0); - nullRead[i] = true; - } else { - Array.set(valueArr_read, i,Byte.parseByte(currentValRead)); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_read, i,(byte) Double.parseDouble(currentValRead)); - } - break; - case TangoConst.Tango_DEV_STATE: - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - try { - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, (int)0); - nullRead[i] = true; - } else { - Array.set(valueArr_read, i,Integer.parseInt(currentValRead)); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_read, i,(int) Double.parseDouble(currentValRead)); - } - break; - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - try { - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, (short)0); - nullRead[i] = true; - } else { - Array.set(valueArr_read, i,Short.parseShort(currentValRead)); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_read, i, (short) Double.parseDouble(currentValRead)); - } - break; - case TangoConst.Tango_DEV_FLOAT: - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, Float.NaN); - nullRead[i] = true; - } else { - - } - break; - case TangoConst.Tango_DEV_STRING: - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, null); - nullRead[i] = true; - } else { - Array.set(valueArr_read, i, StringFormater.formatStringToRead(new String(currentValRead))); - } - break; - case TangoConst.Tango_DEV_DOUBLE: - default: - if (isNullOrNaN(currentValRead)) { - Array.set(valueArr_read, i, MathConst.NAN_FOR_NULL); - nullRead[i] = true; - } else { - Array.set(valueArr_read, i, Double.parseDouble(currentValRead)); - } - } + if (TangoJAVAUtils.isNullOrNaN(currentValRead)) { + nullRead[i] = true; + Array.set(valueArr_read, i, TangoJAVAUtils.defaultValue(dataType)); + } else { + Array.set(valueArr_read, i, TangoJAVAUtils.cast(dataType, currentValRead)); + } i++; } } @@ -1961,85 +1005,12 @@ public class DataBaseAPI { if (currentValWrite == null || currentValWrite.trim().equals("")) { break; } - switch (dataType) { - case TangoConst.Tango_DEV_BOOLEAN: - try { - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, false); - nullRead[i] = true; - } else { - Array.set(valueArr_write, i, ((int) Double.parseDouble(currentValWrite)) != 0); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_write, i, "true".equalsIgnoreCase(currentValWrite.trim())); - } - break; - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - try { - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, (byte) 0); - nullRead[i] = true; - } else { - Array.set(valueArr_write, i, Byte.parseByte(currentValWrite)); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_write, i, (byte) Double.parseDouble(currentValWrite)); - } - break; - case TangoConst.Tango_DEV_STATE: - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - try { - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, (int) 0); - nullRead[i] = true; - } else { - Array.set(valueArr_write, i, Integer.parseInt(currentValWrite)); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_write, i, (int) Double.parseDouble(currentValWrite)); - } - break; - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - try { - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, (short) 0); - nullRead[i] = true; - } else { - Array.set(valueArr_write, i, Short.parseShort(currentValWrite)); - } - } catch (final NumberFormatException n) { - Array.set(valueArr_write, i, (short) Double.parseDouble(currentValWrite)); - } - break; - case TangoConst.Tango_DEV_FLOAT: - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, Float.NaN); - nullRead[i] = true; - } else { - - } - break; - case TangoConst.Tango_DEV_STRING: - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, null); - nullRead[i] = true; - } else { - Array.set(valueArr_write, i, StringFormater.formatStringToRead(new String(currentValWrite))); - } - break; - case TangoConst.Tango_DEV_DOUBLE: - default: - if (isNullOrNaN(currentValWrite)) { - Array.set(valueArr_write, i, MathConst.NAN_FOR_NULL); - nullRead[i] = true; - } else { - Array.set(valueArr_write, i, Double.parseDouble(currentValWrite)); - } + if (TangoJAVAUtils.isNullOrNaN(currentValWrite)) { + nullWrite[i] = true; + Array.set(valueArr_write, i, TangoJAVAUtils.defaultValue(dataType)); + } else { + Array.set(valueArr_write, i, TangoJAVAUtils.cast(dataType, currentValWrite)); } - i++; } } @@ -2048,200 +1019,10 @@ public class DataBaseAPI { final Object[] result = new Object[] { valueArr_read, valueArr_write }; final boolean[][] nullElements = new boolean[][] { nullRead, nullWrite }; - return new NullableData<Object[], boolean[][]>(result, nullElements); + return new NullableData<boolean[][]>(result, nullElements); } else { - switch (dataType) { - case TangoConst.Tango_DEV_BOOLEAN: - return new NullableData<boolean[], boolean[]>((boolean[]) valueArr_read, nullRead); - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - return new NullableData<byte[], boolean[]>((byte[]) valueArr_read, nullRead); - case TangoConst.Tango_DEV_STATE: - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - return new NullableData<int[], boolean[]>((int[]) valueArr_read, nullRead); - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - return new NullableData<short[], boolean[]>((short[]) valueArr_read, nullRead); - case TangoConst.Tango_DEV_FLOAT: - return new NullableData<float[], boolean[]>((float[]) valueArr_read, nullRead); - case TangoConst.Tango_DEV_STRING: - return new NullableData<String[], boolean[]>((String[]) valueArr_read, nullRead); - case TangoConst.Tango_DEV_DOUBLE: - default: - return new NullableData<double[], boolean[]>((double[]) valueArr_read, nullRead); - } - } - } - - private NullableData<Object[], boolean[][]> getImageValue(final String dbValue, final int data_type) { - if (dbValue == null || "".equals(dbValue) || "null".equals(dbValue)) { - return null; - } - Object[] valArray = null; - String value = new String(dbValue); - value = value.replaceAll("\\[", ""); - value = value.replaceAll("\\]", ""); - - StringTokenizer readTokenizer = null; - int rowSize = 0, colSize = 0; - - readTokenizer = new StringTokenizer(value, GlobalConst.CLOB_SEPARATOR_IMAGE_ROWS); - rowSize = readTokenizer.countTokens(); - - if (readTokenizer != null) { - valArray = new Object[rowSize]; - int i = 0; - while (readTokenizer.hasMoreTokens()) { - valArray[i++] = readTokenizer.nextToken().trim().split(GlobalConst.CLOB_SEPARATOR_IMAGE_COLS); - } - if (rowSize > 0) { - colSize = ((String[]) valArray[0]).length; - } - } - - final boolean[][] nullElements = new boolean[rowSize][colSize]; - double[][] dvalueArr = null; - byte[][] cvalueArr = null; - int[][] lvalueArr = null; - short[][] svalueArr = null; - boolean[][] bvalueArr = null; - float[][] fvalueArr = null; - String[][] stvalueArr = null; - switch (data_type) { - case TangoConst.Tango_DEV_BOOLEAN: - bvalueArr = new boolean[rowSize][colSize]; - for (int i = 0; i < rowSize; i++) { - for (int j = 0; j < colSize; j++) { - try { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - bvalueArr[i][j] = false; - nullElements[i][j] = true; - } else { - bvalueArr[i][j] = (((byte) Double.parseDouble(((String[]) valArray[i])[j].trim())) != 0); - } - } catch (final NumberFormatException n) { - bvalueArr[i][j] = new Boolean("true".equalsIgnoreCase(((String[]) valArray[i])[j].trim())); - } - } - } - return new NullableData<Object[], boolean[][]>(bvalueArr, nullElements); - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - cvalueArr = new byte[rowSize][colSize]; - for (int i = 0; i < valArray.length; i++) { - for (int j = 0; j < colSize; j++) { - try { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - cvalueArr[i][j] = 0; - nullElements[i][j] = true; - } else { - cvalueArr[i][j] = Byte.parseByte(((String[]) valArray[i])[j].trim()); - } - } catch (final NumberFormatException n) { - cvalueArr[i][j] = (byte) Double.parseDouble(((String[]) valArray[i])[j].trim()); - } - } - } - return new NullableData<Object[], boolean[][]>(cvalueArr, nullElements); - case TangoConst.Tango_DEV_STATE: - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - lvalueArr = new int[rowSize][colSize]; - for (int i = 0; i < valArray.length; i++) { - for (int j = 0; j < colSize; j++) { - try { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - lvalueArr[i][j] = 0; - nullElements[i][j] = true; - } else { - lvalueArr[i][j] = Integer.parseInt(((String[]) valArray[i])[j].trim()); - } - } catch (final NumberFormatException n) { - lvalueArr[i][j] = (int) Double.parseDouble(((String[]) valArray[i])[j].trim()); - } - } - } - return new NullableData<Object[], boolean[][]>(lvalueArr, nullElements); - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - svalueArr = new short[rowSize][colSize]; - for (int i = 0; i < valArray.length; i++) { - for (int j = 0; j < colSize; j++) { - try { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - svalueArr[i][j] = 0; - nullElements[i][j] = true; - } else { - svalueArr[i][j] = Short.parseShort(((String[]) valArray[i])[j].trim()); - } - } catch (final NumberFormatException n) { - svalueArr[i][j] = (short) Double.parseDouble(((String[]) valArray[i])[j].trim()); - } - } - } - return new NullableData<Object[], boolean[][]>(svalueArr, nullElements); - case TangoConst.Tango_DEV_FLOAT: - fvalueArr = new float[rowSize][colSize]; - for (int i = 0; i < valArray.length; i++) { - for (int j = 0; j < colSize; j++) { - try { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - fvalueArr[i][j] = Float.NaN; - nullElements[i][j] = true; - } else { - fvalueArr[i][j] = Float.parseFloat(((String[]) valArray[i])[j].trim()); - } - } catch (final NumberFormatException n) { - fvalueArr[i][j] = (float) Double.parseDouble(((String[]) valArray[i])[j].trim()); - } - } - } - return new NullableData<Object[], boolean[][]>(fvalueArr, nullElements); - case TangoConst.Tango_DEV_STRING: - stvalueArr = new String[rowSize][colSize]; - for (int i = 0; i < valArray.length; i++) { - for (int j = 0; j < colSize; j++) { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - stvalueArr[i][j] = null; - nullElements[i][j] = true; - } else { - stvalueArr[i][j] = StringFormater.formatStringToRead(new String(((String[]) valArray[i])[j] - .trim())); - } - } - } - return new NullableData<Object[], boolean[][]>(stvalueArr, nullElements); - case TangoConst.Tango_DEV_DOUBLE: - default: - dvalueArr = new double[rowSize][colSize]; - for (int i = 0; i < valArray.length; i++) { - for (int j = 0; j < colSize; j++) { - if (((String[]) valArray[i])[j] == null || "".equals(((String[]) valArray[i])[j]) - || "null".equals(((String[]) valArray[i])[j]) - || "NaN".equalsIgnoreCase(((String[]) valArray[i])[j])) { - dvalueArr[i][j] = MathConst.NAN_FOR_NULL; - nullElements[i][j] = true; - } else { - dvalueArr[i][j] = Double.parseDouble(((String[]) valArray[i])[j].trim()); - } - } - } - return new NullableData<Object[], boolean[][]>(dvalueArr, nullElements); + return new NullableData<boolean[]>(valueArr_read, nullRead); } - } /***************************************************************************** @@ -2260,264 +1041,83 @@ public class DataBaseAPI { * the attribute to register * @throws SnapshotingException */ - public void registerAttribute(final SnapAttributeHeavy snapAttributeHeavy) throws SnapshotingException { - Connection conn = null; + public void registerAttribute(final SnapAttributeHeavy snapAttributeHeavy) throws SnapshotingException { + Connection conn = null; + Object[] listValues = new Object[] { snapAttributeHeavy.getAttributeCompleteName(), + snapAttributeHeavy.getAttribute_device_name(), snapAttributeHeavy.getDomain(), + snapAttributeHeavy.getFamily(), snapAttributeHeavy.getMember(), snapAttributeHeavy.getAttribute_name(), + snapAttributeHeavy.getDataType(), snapAttributeHeavy.getDataFormat(), snapAttributeHeavy.getWritable(), + snapAttributeHeavy.getMax_dim_x(), snapAttributeHeavy.getMax_dim_y(), snapAttributeHeavy.getLevel(), + snapAttributeHeavy.getCtrl_sys(), snapAttributeHeavy.getArchivable(), + snapAttributeHeavy.getSubstitute() }; + + StringBuilder valueConcat = new StringBuilder(); + + PreparedStatement preparedStatement = null; + String query = ""; if (params.getDbType() == DataBaseType.MYSQL) { - PreparedStatement preparedStatement = null; - - final String tableName = getDbSchema() + "." + SnapConst.AST; - - // Create and execute the SQL query string - // Build the query string - String insert_fields = ""; - for (int i = 1; i < SnapConst.TAB_DEF.length - 1; i++) { - insert_fields = insert_fields + SnapConst.TAB_DEF[i] + ", "; - } - insert_fields = insert_fields + SnapConst.TAB_DEF[SnapConst.TAB_DEF.length - 1]; - - String insert_values = ""; - for (int i = 1; i < SnapConst.TAB_DEF.length - 1; i++) { - insert_values = insert_values + "?" + ", "; - } - insert_values = insert_values + "?"; - - final String query = "INSERT INTO " + tableName + " (" + insert_fields + ") " + " VALUES(" + insert_values - + " ) "; - StringBuilder valueConcat = new StringBuilder(); - - try { - conn = connector.getConnection(); - preparedStatement = conn.prepareStatement(query); - preparedStatement.setDate(1, new java.sql.Date(snapAttributeHeavy.getRegistration_time().getTime())); - - Object[] listValues = new Object[] { snapAttributeHeavy.getAttributeCompleteName(), - snapAttributeHeavy.getAttribute_device_name(), snapAttributeHeavy.getDomain(), - snapAttributeHeavy.getFamily(), snapAttributeHeavy.getMember(), - snapAttributeHeavy.getAttribute_name(), snapAttributeHeavy.getDataType(), - snapAttributeHeavy.getDataFormat(), snapAttributeHeavy.getWritable(), - snapAttributeHeavy.getMax_dim_x(), snapAttributeHeavy.getMax_dim_y(), - snapAttributeHeavy.getLevel(), snapAttributeHeavy.getCtrl_sys(), - snapAttributeHeavy.getArchivable(), snapAttributeHeavy.getSubstitute() }; - - valueConcat.append("("); - for (int i = 2; i < listValues.length + 2; ++i) { - Object value = listValues[i - 2]; - if (value instanceof Integer) { - int intValue = ((Integer) value).intValue(); - preparedStatement.setInt(i, intValue); - valueConcat.append(intValue); - } - if (value instanceof String) { - preparedStatement.setString(i, (String) value); - valueConcat.append((String) value); - } - valueConcat.append(","); - } - valueConcat.append(")"); - - preparedStatement.executeUpdate(); - listValues = null; - valueConcat = null; - // preparedStatement.close(); - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; - final String reason = "Failed while executing DataBaseAPI.registerAttribute() method..."; - final String desc = ""; - final String queryDebug = query + " => " + valueConcat.toString(); - throw new SnapshotingException(message, reason, queryDebug, ErrSeverity.PANIC, desc, "", e); - } finally { - closeStatement(preparedStatement); - closeConnection(conn); - } - } else if (params.getDbType() == DataBaseType.ORACLE) { - CallableStatement callableStatement = null; - final String procName = "RSA"; - final String query = "{call " + getDbSchema() + "." + procName - + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}"; - StringBuilder valueConcat = new StringBuilder(); - try { - conn = connector.getConnection(); - callableStatement = conn.prepareCall(query); // number of - // parameters : - // 16 - callableStatement.setTimestamp(1, snapAttributeHeavy.getRegistration_time()); - - Object[] listValues = new Object[] { snapAttributeHeavy.getAttributeCompleteName(), - snapAttributeHeavy.getAttribute_device_name(), snapAttributeHeavy.getDomain(), - snapAttributeHeavy.getFamily(), snapAttributeHeavy.getMember(), - snapAttributeHeavy.getAttribute_name(), snapAttributeHeavy.getDataType(), - snapAttributeHeavy.getDataFormat(), snapAttributeHeavy.getWritable(), - snapAttributeHeavy.getMax_dim_x(), snapAttributeHeavy.getMax_dim_y(), - snapAttributeHeavy.getLevel(), snapAttributeHeavy.getCtrl_sys(), - snapAttributeHeavy.getArchivable(), snapAttributeHeavy.getSubstitute() }; - - valueConcat.append("("); - for (int i = 2; i < listValues.length + 2; ++i) { - Object value = listValues[i - 2]; - if (value instanceof Integer) { - int intValue = ((Integer) value).intValue(); - callableStatement.setInt(i, intValue); - valueConcat.append(intValue); - } - if (value instanceof String) { - callableStatement.setString(i, (String) value); - valueConcat.append((String) value); - } - valueConcat.append(","); - } - valueConcat.append(")"); + final String tableName = getDbSchema() + "." + SnapConst.AST; - callableStatement.executeUpdate(); - callableStatement.close(); - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; - final String reason = "Failed while executing DataBaseAPI.registerAttribute() method..."; - final String desc = ""; - final String queryDebug = query + " => " + valueConcat.toString(); - throw new SnapshotingException(message, reason, queryDebug, ErrSeverity.PANIC, desc, "", e); - } finally { - closeStatement(callableStatement); - closeConnection(conn); - } - } - } + // Create and execute the SQL query string + // Build the query string + String insert_fields = String.join(", ", SnapConst.TAB_DEF); - /** - * ************************************************************************ - * <b>Description : </b> Returns an array containing the differents - * definition informations for the given attribute - * - * @param att_name - * The attribute's name - * @return An array containing the differents definition informations for - * the given attribute - * @throws SnapshotingException - * ************************************************************* - * * ******** - */ - public List<String> getAttDefinitionData(final String att_name) throws SnapshotingException { - final List<String> definitionsList = new ArrayList<String>(); - Connection conn = null; - ResultSet rset = null; - // PreparedStatement preparedStatement; - Statement statement = null; + String insert_values = ""; + for (int i = 1; i < SnapConst.TAB_DEF.length - 1; i++) { + insert_values = insert_values + "?" + ", "; + } + insert_values = insert_values + "?"; - // Create and execute the SQL query string - String query = ""; - final String table_name = getDbSchema() + "." + SnapConst.AST; - String select_field_spec = ""; - // String clause_1 = ConfigConst.fullName + "= ?"; - final String clause_1 = SnapConst.fullName + "= " + "'" + att_name.trim() + "'"; - if (params.getDbType() == DataBaseType.MYSQL) { - select_field_spec = " * "; + query = "INSERT INTO " + tableName + " (" + insert_fields + ") " + " VALUES(" + insert_values + " ) "; } else if (params.getDbType() == DataBaseType.ORACLE) { - for (int i = 0; i < SnapConst.TAB_DEF.length - 1; i++) { - select_field_spec = select_field_spec + "to_char(" + SnapConst.TAB_DEF[i] + ")" + ", "; - } - select_field_spec = select_field_spec + "to_char(" + SnapConst.TAB_DEF[SnapConst.TAB_DEF.length - 1] + ")"; - } - query = "SELECT " + select_field_spec + " FROM " + table_name + " WHERE " + clause_1; - try { - conn = connector.getConnection(); - statement = conn.createStatement(); - rset = statement.executeQuery(query); - // Gets the result of the query - while (rset.next()) { - for (int i = 0; i < SnapConst.TAB_DEF.length; i++) { - final String info = SnapConst.TAB_DEF[i] + "::" + rset.getString(i + 1); - definitionsList.add(info); - } - } - statement.close(); - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; - final String reason = "Failed while executing DataBaseAPI.getAttDefinitionData() method..."; - final String desc = ""; - throw new SnapshotingException(message, reason, query, ErrSeverity.PANIC, desc, "", e); - } finally { - closeResultSet(rset); - closeStatement(statement); - closeConnection(conn); - } - // Returns the names list - return definitionsList; - } - - /** - * Renvoi les différentes informations de définition de l'attribut passé en - * paramètre, qui verifie les conditions donnees. Author : Laure Garda - * - * @param att_name - * @param clause - * @return - * @throws SnapshotingException - */ - public List<SnapAttributeHeavy> getAttDefinitionData(final String att_name, final String clause) - throws SnapshotingException { - final List<SnapAttributeHeavy> definitionsList = new ArrayList<SnapAttributeHeavy>(); - Connection conn = null; - ResultSet rset = null; - // PreparedStatement preparedStatement; - Statement statement = null; - - // Create and execute the SQL query string - String query = ""; - final String table_name = getDbSchema() + "." + SnapConst.AST; - final String clause_1 = SnapConst.fullName + " = " + "'" + att_name.trim() + "'"; - - final String select_field_spec = " * "; - - if (clause.equals("")) { - query = "SELECT " + select_field_spec + " FROM " + table_name + " WHERE " + clause_1; - } else { - query = "SELECT " + select_field_spec + " FROM " + table_name + clause + " AND " + clause_1; - } + final String procName = "RSA"; + query = "{call " + getDbSchema() + "." + procName + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}"; + } - try { + try { conn = connector.getConnection(); - statement = conn.createStatement(); + preparedStatement = params.getDbType() == DataBaseType.MYSQL ? conn.prepareStatement(query) + : conn.prepareCall(query); + if (params.getDbType() == DataBaseType.MYSQL) { + preparedStatement.setDate(1, new java.sql.Date(snapAttributeHeavy.getRegistration_time().getTime())); + } else { + preparedStatement.setTimestamp(1, snapAttributeHeavy.getRegistration_time()); + } - rset = statement.executeQuery(query); - // Gets the result of the query - while (rset.next()) { - final SnapAttributeHeavy snapAttributeHeavy = new SnapAttributeHeavy(); - snapAttributeHeavy.setAttributeId(rset.getInt(1)); - snapAttributeHeavy.setRegistration_time(rset.getTimestamp(2)); - snapAttributeHeavy.setAttributeCompleteName(rset.getString(3)); - snapAttributeHeavy.setAttribute_device_name(rset.getString(4)); - snapAttributeHeavy.setDomain(rset.getString(5)); - snapAttributeHeavy.setFamily(rset.getString(6)); - snapAttributeHeavy.setMember(rset.getString(7)); - snapAttributeHeavy.setAttribute_name(rset.getString(8)); - snapAttributeHeavy.setDataType(rset.getInt(9)); - snapAttributeHeavy.setDataFormat(rset.getInt(10)); - snapAttributeHeavy.setWritable(rset.getInt(11)); - snapAttributeHeavy.setMax_dim_x(rset.getInt(12)); - snapAttributeHeavy.setMax_dim_y(rset.getInt(13)); - snapAttributeHeavy.setLevel(rset.getInt(14)); - snapAttributeHeavy.setCtrl_sys(rset.getString(15)); // facility - // = - // ctrl_sys?? - snapAttributeHeavy.setArchivable(rset.getInt(16)); - snapAttributeHeavy.setSubstitute(rset.getInt(17)); - definitionsList.add(snapAttributeHeavy); - } - statement.close(); - } catch (final SQLException e) { - final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; - final String reason = "Failed while executing DataBaseAPI.getAttDefinitionData() method..."; - final String desc = ""; - throw new SnapshotingException(message, reason, query, ErrSeverity.PANIC, desc, "", e); - } finally { - closeResultSet(rset); - closeStatement(statement); - closeConnection(conn); - } + valueConcat.append("("); + for (int i = 2; i < listValues.length + 2; ++i) { + Object value = listValues[i - 2]; + if (value instanceof Integer) { + int intValue = ((Integer) value).intValue(); + preparedStatement.setInt(i, intValue); + valueConcat.append(intValue); + } + if (value instanceof String) { + preparedStatement.setString(i, (String) value); + valueConcat.append((String) value); + } + valueConcat.append(","); + } + valueConcat.append(")"); + + preparedStatement.executeUpdate(); + listValues = null; + valueConcat = null; + + // preparedStatement.close(); + } catch (final SQLException e) { + final String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + SnapConst.QUERY_FAILURE; + final String reason = "Failed while executing DataBaseAPI.registerAttribute() method..."; + final String desc = ""; + final String queryDebug = query + " => " + valueConcat.toString(); + throw new SnapshotingException(message, reason, queryDebug, ErrSeverity.PANIC, desc, "", e); + } finally { + closeStatement(preparedStatement); + closeConnection(conn); + } - // Returns the names list - return definitionsList; - } + } /** * This method registers a new context in the database for snapshots. @@ -2529,6 +1129,7 @@ public class DataBaseAPI { * @throws SnapshotingException */ public int create_context(final SnapContext snapContext) throws SnapshotingException { + // TODO refact int contextID = snapContext.getId(); final String tableName = getDbSchema() + "." + SnapConst.CONTEXT; final java.util.List<Integer> contextIDList = new ArrayList<Integer>(); @@ -2550,8 +1151,8 @@ public class DataBaseAPI { // update snap.context SET name=?, author=?, reason=?, // description=? where id =?; final String updateQuery = "UPDATE " + tableName + " SET " + SnapConst.name + "= ?, " - + SnapConst.TAB_CONTEXT[3] + "= ?, " + SnapConst.TAB_CONTEXT[4] + "= ?, " - + SnapConst.TAB_CONTEXT[5] + "= ? WHERE " + SnapConst.ID_CONTEXT + "= ?"; + + SnapConst.author + "= ?, " + SnapConst.reason + "= ?, " + SnapConst.description + "= ? WHERE " + + SnapConst.ID_CONTEXT + "= ?"; try { preparedStatement = conn.prepareStatement(updateQuery); @@ -2670,22 +1271,17 @@ public class DataBaseAPI { // final String selectFields = "*"; final String clause1 = SnapConst.AST + "." + SnapConst.ID + " = " + SnapConst.LIST + "." - + SnapConst.TAB_LIST[1]; - final String clause2 = SnapConst.LIST + "." + SnapConst.TAB_LIST[0] + " = " + SnapConst.CONTEXT + "." + + SnapConst.ID_ATT; + final String clause2 = SnapConst.LIST + "." + SnapConst.ID_CONTEXT + " = " + SnapConst.CONTEXT + "." + SnapConst.ID_CONTEXT; final String clause3 = SnapConst.CONTEXT + "." + SnapConst.ID_CONTEXT + " = ?"; // the SQL request is : select DISTINCT full_name from snap.ast where // ast.id = list.id_att and list.id_context = context.id_context and // context.name = 'nom'; - String query = "SELECT " + selectFields + " FROM " + tables + " WHERE " + clause1 + " AND " + clause2 + " AND " + String query = "SELECT " + selectFields + " FROM " + tables + + (whereClause.equals("") ? " WHERE " : whereClause + " AND ") + clause1 + " AND " + clause2 + " AND " + clause3; - if (whereClause.equals("")) { - query = "SELECT " + selectFields + " FROM " + tables + " WHERE " + clause1 + " AND " + clause2 + " AND " - + clause3; - } else { - query = "SELECT " + selectFields + " FROM " + tables + whereClause + " AND " + clause1 + " AND " + clause2 - + " AND " + clause3; - } + PreparedStatement statement = null; ResultSet rset = null; Connection conn = null; @@ -2838,8 +1434,8 @@ public class DataBaseAPI { SnapConst.dataFormat + ", " + // data_format SnapConst.writable; // writable final String clause_1 = SnapConst.AST + "." + SnapConst.ID + " = " + SnapConst.LIST + "." - + SnapConst.TAB_LIST[1]; - final String clause_2 = SnapConst.LIST + "." + SnapConst.TAB_LIST[0] + " = " + SnapConst.CONTEXT + "." + + SnapConst.ID_ATT; + final String clause_2 = SnapConst.LIST + "." + SnapConst.ID_CONTEXT + " = " + SnapConst.CONTEXT + "." + SnapConst.ID_CONTEXT; final String clause_3 = SnapConst.CONTEXT + "." + SnapConst.ID_CONTEXT + " = ?"; // the SQL request is : select DISTINCT full_name from snap.ast where @@ -2894,12 +1490,12 @@ public class DataBaseAPI { final String tableName = getDbSchema() + "." + SnapConst.LIST; String query; - final String insert_fields = SnapConst.TAB_LIST[0] + ", " + SnapConst.TAB_LIST[1]; + final String insert_fields = SnapConst.ID_CONTEXT + ", " + SnapConst.ID_ATT; query = "INSERT INTO " + tableName + " (" + insert_fields + ")" + " VALUES (?,?)"; PreparedStatement prest = null; Connection conn = null; - final String selectQuery = "select " + SnapConst.TAB_LIST[1] + " from " + tableName + " where " - + SnapConst.TAB_LIST[0] + " = " + id_context; + final String selectQuery = "select " + SnapConst.ID_ATT + " from " + tableName + " where " + + SnapConst.ID_CONTEXT + " = " + id_context; try { conn = connector.getConnection(); prest = conn.prepareStatement(selectQuery); @@ -3080,9 +1676,8 @@ public class DataBaseAPI { private void updateSnapContextID(final int id_snap, final int initial_context_value) throws SnapshotingException { PreparedStatement preparedStatement = null; final String table = getDbSchema() + "." + SnapConst.SNAPSHOT; - final String setField = SnapConst.ID_CONTEXT; - final String refField = SnapConst.ID_SNAP; - final String query = "UPDATE " + table + " SET " + setField + "=? " + "WHERE " + refField + "=?"; + final String query = "UPDATE " + table + " SET " + SnapConst.ID_CONTEXT + "=? " + "WHERE " + SnapConst.ID_SNAP + + "=?"; Connection conn = null; try { @@ -3118,10 +1713,8 @@ public class DataBaseAPI { PreparedStatement preparedStatement = null; Connection conn = null; final String table = getDbSchema() + "." + SnapConst.SNAPSHOT; - final String setField = SnapConst.snap_comment; - final String refField = SnapConst.ID_SNAP; - final String query = "UPDATE " + table + " SET " + setField + " = '" + new_comment + "' WHERE " + refField - + " = ?"; + final String query = "UPDATE " + table + " SET " + SnapConst.snap_comment + " = '" + new_comment + "' WHERE " + + SnapConst.ID_SNAP + " = ?"; try { conn = connector.getConnection(); preparedStatement = conn.prepareStatement(query); @@ -3152,9 +1745,8 @@ public class DataBaseAPI { PreparedStatement preparedStatement = null; ResultSet resultSet = null; final String table = getDbSchema() + "." + SnapConst.SNAPSHOT; - final String commentColumn = SnapConst.snap_comment; - final String id = SnapConst.ID_SNAP; - final String query = "SELECT " + commentColumn + " FROM " + table + " WHERE " + id + " = " + snapID; + final String query = "SELECT " + SnapConst.snap_comment + " FROM " + table + " WHERE " + SnapConst.ID_SNAP + + " = " + snapID; String comment = ""; try { conn = connector.getConnection(); @@ -3192,7 +1784,7 @@ public class DataBaseAPI { int idSnap = -1; final String table = getDbSchema() + "." + SnapConst.SNAPSHOT; final String selectField = SnapConst.ID_SNAP; - final String clause_1 = SnapConst.TAB_SNAP[1] + "=?"; + final String clause_1 = SnapConst.ID_CONTEXT + "=?"; final String query = "SELECT " + selectField + " FROM " + table + " WHERE " + clause_1; PreparedStatement preparedStatement = null; ResultSet rset = null; @@ -3236,7 +1828,7 @@ public class DataBaseAPI { final java.sql.Timestamp time = new java.sql.Timestamp(new java.util.Date().getTime()); PreparedStatement preparedStatement = null; final String table = getDbSchema() + "." + SnapConst.SNAPSHOT; - final String insert_fields = SnapConst.TAB_SNAP[1] + ", " +SnapConst.time; + final String insert_fields = SnapConst.ID_CONTEXT + ", " + SnapConst.time; final String insert_values = "?, ?"; final String query = "INSERT INTO " + table + " (" + insert_fields + ") VALUES(" + insert_values + ")"; Connection conn = null; @@ -3280,97 +1872,22 @@ public class DataBaseAPI { // Inner classes // // ///////////// // - public static class NullableData<V, B> { - private final V value; - private final B nullElements; + public static class NullableData<T> { + private final Object value; + private final T nullElements; - public NullableData(final V value, final B nullElements) { + public NullableData(Object value, T nullElements) { super(); this.value = value; this.nullElements = nullElements; } - public V getValue() { + public Object getValue() { return value; } - public B getNullElements() { + public T getNullElements() { return nullElements; } - } - - private Object initPrimitiveArray(int dataType, int length) { - switch (dataType) { - case TangoConst.Tango_DEV_BOOLEAN: - return new boolean[length]; - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - return new byte[length]; - case TangoConst.Tango_DEV_STATE: - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - return new int[length]; - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - return new short[length]; - case TangoConst.Tango_DEV_FLOAT: - return new float[length]; - case TangoConst.Tango_DEV_STRING: - return new String[length]; - case TangoConst.Tango_DEV_DOUBLE: - default: - return new double[length]; - } - - } - - private Object castResultSetAsPrimitive(int dataType, ResultSet resultSet, int index) throws SQLException { - switch (dataType) { - case TangoConst.Tango_DEV_STRING: - return resultSet.getString(1); - case TangoConst.Tango_DEV_UCHAR: - case TangoConst.Tango_DEV_CHAR: - return resultSet.getByte(index); - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - case TangoConst.Tango_DEV_STATE: - return resultSet.getInt(index); - case TangoConst.Tango_DEV_BOOLEAN: - return resultSet.getInt(index) != 0; - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - return resultSet.getShort(index); - case TangoConst.Tango_DEV_FLOAT: - return resultSet.getFloat(index); - case TangoConst.Tango_DEV_DOUBLE: - default: - return resultSet.getDouble(index); - } - } - - private Object castResultSetAsObject(int dataType, ResultSet resultSet, int index) throws SQLException { - switch (dataType) { - case TangoConst.Tango_DEV_STRING: - return resultSet.getString(1); - case TangoConst.Tango_DEV_UCHAR: - case TangoConst.Tango_DEV_CHAR: - return Byte.valueOf(resultSet.getByte(index)); - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - case TangoConst.Tango_DEV_STATE: - return Integer.valueOf(resultSet.getInt(index)); - case TangoConst.Tango_DEV_BOOLEAN: - return Boolean.valueOf(resultSet.getInt(index) != 0); - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - return Short.valueOf(resultSet.getShort(index)); - case TangoConst.Tango_DEV_FLOAT: - return Float.valueOf(resultSet.getFloat(index)); - case TangoConst.Tango_DEV_DOUBLE: - default: - return Double.valueOf(resultSet.getDouble(index)); - } - } - } diff --git a/src/main/java/fr/soleil/archiving/snap/api/manager/SnapManagerApi.java b/src/main/java/fr/soleil/archiving/snap/api/manager/SnapManagerApi.java index fdf5b82..d01f901 100644 --- a/src/main/java/fr/soleil/archiving/snap/api/manager/SnapManagerApi.java +++ b/src/main/java/fr/soleil/archiving/snap/api/manager/SnapManagerApi.java @@ -540,12 +540,6 @@ public class SnapManagerApi { } - public static List<SnapContext> getAllContext() throws SnapshotingException { - if (snapDataBase == null) { - throw new SnapshotingException(DATA_BASE_API_NOT_INIT); - } - return snapDataBase.getAllContext(); - } /** * TODO LG Description : Extracts the clause SQL from the given criterions @@ -691,13 +685,7 @@ public class SnapManagerApi { return result; } - public static List<String> getAttDefinitionData(final String attributeName) throws SnapshotingException { - if (snapDataBase == null) { - throw new SnapshotingException(DATA_BASE_API_NOT_INIT); - } - final List<String> vector = snapDataBase.getAttDefinitionData(attributeName); - return vector; - } + public static int getMaxID() throws SnapshotingException { if (snapDataBase == null) { @@ -706,12 +694,7 @@ public class SnapManagerApi { return snapDataBase.getMaxContextID(); } - public static List<SnapshotLight> getContextAssociatedSnapshots(final int id_context) throws SnapshotingException { - if (snapDataBase == null) { - throw new SnapshotingException(DATA_BASE_API_NOT_INIT); - } - return snapDataBase.getContextAssociatedSnapshots(id_context); - } + /** * TODO LG Description : Extracts the clause SQL from the given criterions diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/AttributeSupport.java b/src/main/java/fr/soleil/archiving/snap/api/tools/AttributeSupport.java deleted file mode 100644 index 03837a7..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/AttributeSupport.java +++ /dev/null @@ -1,378 +0,0 @@ -// +====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/AttributeSupport.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class AttributeSupport. -// (chinkumo) - 24 août 2005 -// -// $Author: ounsy $ -// -// $Revision: 1.10 $ -// -// $Log: AttributeSupport.java,v $ -// Revision 1.10 2006/06/28 12:43:58 ounsy -// image support -// -// Revision 1.9 2006/06/16 08:48:36 ounsy -// exceptions messages easier to understand -// -// Revision 1.8 2006/04/13 12:47:24 ounsy -// new spectrum types support -// -// Revision 1.7 2006/03/16 15:29:50 ounsy -// String and state scalar support -// -// Revision 1.6 2006/03/15 15:12:05 ounsy -// boolean scalar management -// -// Revision 1.5 2006/02/24 12:53:36 ounsy -// float ok -// -// Revision 1.4 2006/02/17 09:25:00 chinkumo -// Minor change : code reformated. -// -// Revision 1.3 2006/02/15 09:05:33 ounsy -// Spectrums Management -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.2.1 2005/11/15 13:36:38 chinkumo -// first commit -// -// Revision 1.1.2.1 2005/09/09 08:21:24 chinkumo -// First commit ! -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== -package fr.soleil.archiving.snap.api.tools; - -import fr.esrf.Tango.AttrDataFormat; -import fr.esrf.Tango.AttrWriteType; -import fr.esrf.Tango.ErrSeverity; -import fr.esrf.TangoDs.TangoConst; - -public class AttributeSupport { - public static boolean checkAttributeSupport(String name, int data_type, int data_format, int writable) - throws SnapshotingException { - switch (data_format) { - case AttrDataFormat._SCALAR: - switch (writable) { - case AttrWriteType._READ: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - return true; - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - case AttrWriteType._READ_WITH_WRITE: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - case AttrWriteType._WRITE: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - case AttrWriteType._READ_WRITE: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - default: - throw generateException(SnapConst.DATA_WRITABLE_EXCEPTION, writable, name); - } - case AttrDataFormat._SPECTRUM: - // throw generateException(GlobalConst.DATA_FORMAT_EXCEPTION , - // data_format , name); - switch (writable) { - case AttrWriteType._READ: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - return true; - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - case AttrWriteType._WRITE: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - case AttrWriteType._READ_WITH_WRITE: - case AttrWriteType._READ_WRITE: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - return true; - case TangoConst.Tango_DEV_USHORT: - return true; - case TangoConst.Tango_DEV_LONG: - return true; - case TangoConst.Tango_DEV_ULONG: - return true; - case TangoConst.Tango_DEV_DOUBLE: - return true; - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - return true; - case TangoConst.Tango_DEV_CHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_UCHAR: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STATE: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - case TangoConst.Tango_DEV_STRING: - return true; - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - default: - throw generateException(SnapConst.DATA_WRITABLE_EXCEPTION, writable, name); - } - case AttrDataFormat._IMAGE: - switch (writable) { - case AttrWriteType._READ: - switch (data_type) { - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - case TangoConst.Tango_DEV_DOUBLE: - case TangoConst.Tango_DEV_FLOAT: - return true; - case TangoConst.Tango_DEV_BOOLEAN: - case TangoConst.Tango_DEV_CHAR: - case TangoConst.Tango_DEV_UCHAR: - case TangoConst.Tango_DEV_STATE: - case TangoConst.Tango_DEV_STRING: - default: - throw generateException(SnapConst.DATA_TYPE_EXCEPTION, data_type, name); - } - case AttrWriteType._WRITE: - case AttrWriteType._READ_WITH_WRITE: - case AttrWriteType._READ_WRITE: - default: - throw generateException(SnapConst.DATA_WRITABLE_EXCEPTION, writable, name); - } - default: - throw generateException(SnapConst.DATA_FORMAT_EXCEPTION, data_format, name); - } - } - - private static SnapshotingException generateException(String cause, int cause_value, String name) { - String message = SnapConst.SNAPSHOTING_ERROR_PREFIX + " : " + cause; - String reason = "Failed while executing AttributeSupport.checkAttributeSupport()..."; - String desc = new String(cause + " ("); - if (SnapConst.DATA_WRITABLE_EXCEPTION.equals(cause)) { - switch (cause_value) { - case AttrWriteType._READ: - desc += "READ"; - break; - case AttrWriteType._WRITE: - desc += "WRITE"; - break; - case AttrWriteType._READ_WITH_WRITE: - desc += "READ WITH WRITE"; - break; - case AttrWriteType._READ_WRITE: - desc += "READ WRITE"; - break; - default: - desc += cause_value; - } - } else if (SnapConst.DATA_FORMAT_EXCEPTION.equals(cause)) { - switch (cause_value) { - case AttrDataFormat._SCALAR: - desc += "SCALAR"; - break; - case AttrDataFormat._SPECTRUM: - desc += "SPECTRUM"; - break; - case AttrDataFormat._IMAGE: - desc += "IMAGE"; - break; - default: - desc += cause_value; - } - } else if (SnapConst.DATA_TYPE_EXCEPTION.equals(cause)) { - switch (cause_value) { - case TangoConst.Tango_DEV_SHORT: - desc += "SHORT"; - break; - case TangoConst.Tango_DEV_USHORT: - desc += "UNSIGNED SHORT"; - break; - case TangoConst.Tango_DEV_LONG: - desc += "LONG"; - break; - case TangoConst.Tango_DEV_ULONG: - desc += "UNSIGNED LONG"; - break; - case TangoConst.Tango_DEV_DOUBLE: - desc += "DOUBLE"; - break; - case TangoConst.Tango_DEV_FLOAT: - desc += "FLOAT"; - break; - case TangoConst.Tango_DEV_BOOLEAN: - desc += "BOOLEAN"; - break; - case TangoConst.Tango_DEV_CHAR: - desc += "CHAR"; - break; - case TangoConst.Tango_DEV_UCHAR: - desc += "UNSIGNED CHAR"; - break; - case TangoConst.Tango_DEV_STATE: - desc += "STATE"; - break; - case TangoConst.Tango_DEV_STRING: - desc += "STRING"; - break; - default: - desc += cause_value; - } - } else { - desc += cause_value; - } - desc += ") not supported !! [" + name + "]"; - // String desc = cause + " (" + cause_value + ") not supported !! [" + - // name + "]"; - return new SnapshotingException(message, reason, ErrSeverity.WARN, desc, ""); - } -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/BlobSpectrum.java b/src/main/java/fr/soleil/archiving/snap/api/tools/BlobSpectrum.java deleted file mode 100644 index 02b91e8..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/BlobSpectrum.java +++ /dev/null @@ -1,104 +0,0 @@ -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/BlobSpectrum.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class BlobSpectrum. -// (Chinkumo Jean) - Mar 26, 2004 -// -// $Author: ounsy $ -// -// $Revision: 1.4 $ -// -// $Log: BlobSpectrum.java,v $ -// Revision 1.4 2007/04/05 10:16:23 ounsy -// minor changes -// -// Revision 1.3 2006/01/27 13:04:44 ounsy -// organised imports -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.16.1 2005/11/15 13:34:38 chinkumo -// no message -// -// Revision 1.1 2005/01/26 15:35:37 chinkumo -// Ultimate synchronization before real sharing. -// -// Revision 1.1 2004/12/06 17:39:56 chinkumo -// First commit (new API architecture). -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== - -package fr.soleil.archiving.snap.api.tools; - -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Reader; -import java.io.Writer; -import java.sql.Clob; -import java.sql.SQLException; - -public class BlobSpectrum implements Clob { - public long length() throws SQLException { - return 0; - } - - public String getSubString(long pos, int length) throws SQLException { - return null; - } - - public Reader getCharacterStream() throws SQLException { - return null; - } - - public InputStream getAsciiStream() throws SQLException { - return null; - } - - public long position(String searchstr, long start) throws SQLException { - return 0; - } - - public long position(Clob searchstr, long start) throws SQLException { - return 0; - } - - public int setString(long pos, String str) throws SQLException { - return 0; - } - - public int setString(long pos, String str, int offset, int len) - throws SQLException { - return 0; - } - - public OutputStream setAsciiStream(long pos) throws SQLException { - return null; - } - - public Writer setCharacterStream(long pos) throws SQLException { - return null; - } - - public void truncate(long len) throws SQLException { - } - - public void free() throws SQLException { - // TODO Auto-generated method stub - - } - - public Reader getCharacterStream(long arg0, long arg1) throws SQLException { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/ScalarEvent.java b/src/main/java/fr/soleil/archiving/snap/api/tools/ScalarEvent.java deleted file mode 100644 index 367e7e4..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/ScalarEvent.java +++ /dev/null @@ -1,426 +0,0 @@ -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -import fr.esrf.Tango.AttrDataFormat; -import fr.esrf.Tango.AttrWriteType; -import fr.esrf.Tango.DevState; -import fr.esrf.TangoDs.TangoConst; -import fr.soleil.archiving.common.api.tools.GlobalConst; - -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/ScalarEvent.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class ScalarEvent. -// (chinkumo) - 7 nov. 2005 -// -// $Author: ounsy $ -// -// $Revision: 1.7 $ -// -// $Log: ScalarEvent.java,v $ -// Revision 1.7 2006/10/31 16:54:24 ounsy -// milliseconds and null values management -// -// Revision 1.6 2006/05/12 09:26:20 ounsy -// CLOB_SEPARATOR in GlobalConst -// -// Revision 1.5 2006/05/04 14:35:20 ounsy -// CLOB_SEPARATOR centralized in ConfigConst -// -// Revision 1.4 2006/03/13 15:19:43 ounsy -// State as an int management -// -// Revision 1.3 2006/03/13 15:14:11 ounsy -// Long as an int management -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.2.1 2005/11/15 13:36:38 chinkumo -// first commit -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== - -public class ScalarEvent extends SnapAttribute { - - public ScalarEvent() { - super(); - } - - public ScalarEvent(String[] scalarEvent) { - this.setAttributeCompleteName(scalarEvent[0]); - this.setDataFormat(AttrDataFormat._SCALAR); - this.setDataType(Integer.parseInt(scalarEvent[2])); - this.setWritable(Integer.parseInt(scalarEvent[3])); - setAttId(Integer.parseInt(scalarEvent[4])); - setSnapId(Integer.parseInt(scalarEvent[5])); - setSnapDate(Timestamp.valueOf(scalarEvent[6])); - - Object value = getValue(scalarEvent); - setValue(value, null); - - } - - public Object getValue(String[] scalarEvent) { - Object value = null; - switch (getWritable()) { - case AttrWriteType._READ: - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - value = new String(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_STATE: - value = Integer.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_UCHAR: - value = Byte.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_LONG: - value = Integer.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_ULONG: - value = Integer.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_BOOLEAN: - value = Boolean.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_SHORT: - value = Short.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_USHORT: - value = Short.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_FLOAT: - value = Float.valueOf(scalarEvent[7]); - break; - case TangoConst.Tango_DEV_DOUBLE: - value = Double.valueOf(scalarEvent[7]); - break; - default: - value = null; - break; - } - break; - - case AttrWriteType._READ_WITH_WRITE: - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - String[] valueString = { new String(scalarEvent[7]), new String(scalarEvent[8]) }; - value = valueString; - break; - case TangoConst.Tango_DEV_STATE: - int[] valueInteger = { Integer.parseInt(scalarEvent[7]), Integer.parseInt(scalarEvent[8]) }; - value = valueInteger; - break; - case TangoConst.Tango_DEV_UCHAR: - byte[] valueByte = { Byte.parseByte(scalarEvent[7]), Byte.parseByte(scalarEvent[8]) }; - value = valueByte; - break; - case TangoConst.Tango_DEV_LONG: - int[] valueLong = { Integer.parseInt(scalarEvent[7]), Integer.parseInt(scalarEvent[8]) }; - value = valueLong; - break; - case TangoConst.Tango_DEV_ULONG: - int[] valueULong = { Integer.parseInt(scalarEvent[7]), Integer.parseInt(scalarEvent[8]) }; - value = valueULong; - break; - case TangoConst.Tango_DEV_BOOLEAN: - boolean[] valueBoolean = { Boolean.parseBoolean(scalarEvent[7]), Boolean.parseBoolean(scalarEvent[8]) }; - value = valueBoolean; - break; - case TangoConst.Tango_DEV_SHORT: - short[] valueShort = { Short.parseShort(scalarEvent[7]), Short.parseShort(scalarEvent[8]) }; - value = valueShort; - break; - case TangoConst.Tango_DEV_USHORT: - short[] valueUShort = { Short.parseShort(scalarEvent[7]), Short.parseShort(scalarEvent[8]) }; - value = valueUShort; - break; - case TangoConst.Tango_DEV_FLOAT: - float[] valueFloat = { Float.parseFloat(scalarEvent[7]), Float.parseFloat(scalarEvent[8]) }; - value = valueFloat; - break; - case TangoConst.Tango_DEV_DOUBLE: - double[] valueDouble = { Double.parseDouble(scalarEvent[7]), Double.parseDouble(scalarEvent[8]) }; - value = valueDouble; - break; - default: - value = null; - break; - } - break; - - case AttrWriteType._WRITE: - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - value = new String(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_STATE: - value = Integer.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_UCHAR: - value = Byte.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_LONG: - value = Integer.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_ULONG: - value = Integer.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_BOOLEAN: - value = Boolean.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_SHORT: - value = Short.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_USHORT: - value = Short.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_FLOAT: - value = Float.valueOf(scalarEvent[8]); - break; - case TangoConst.Tango_DEV_DOUBLE: - value = Double.valueOf(scalarEvent[8]); - break; - default: - value = null; - break; - } - break; - - case AttrWriteType._READ_WRITE: - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - String[] valueString = { new String(scalarEvent[7]), new String(scalarEvent[8]) }; - value = valueString; - break; - case TangoConst.Tango_DEV_STATE: - int[] valueInteger = { Integer.parseInt(scalarEvent[7]), Integer.parseInt(scalarEvent[8]) }; - value = valueInteger; - break; - case TangoConst.Tango_DEV_UCHAR: - byte[] valueByte = { Byte.parseByte(scalarEvent[7]), Byte.parseByte(scalarEvent[8]) }; - value = valueByte; - break; - case TangoConst.Tango_DEV_LONG: - int[] valueLong = { Integer.parseInt(scalarEvent[7]), Integer.parseInt(scalarEvent[8]) }; - value = valueLong; - break; - case TangoConst.Tango_DEV_ULONG: - int[] valueULong = { Integer.parseInt(scalarEvent[7]), Integer.parseInt(scalarEvent[8]) }; - value = valueULong; - break; - case TangoConst.Tango_DEV_BOOLEAN: - boolean[] valueBoolean = { Boolean.parseBoolean(scalarEvent[7]), Boolean.parseBoolean(scalarEvent[8]) }; - value = valueBoolean; - break; - case TangoConst.Tango_DEV_SHORT: - short[] valueShort = { Short.parseShort(scalarEvent[7]), Short.parseShort(scalarEvent[8]) }; - value = valueShort; - break; - case TangoConst.Tango_DEV_USHORT: - short[] valueUShort = { Short.parseShort(scalarEvent[7]), Short.parseShort(scalarEvent[8]) }; - value = valueUShort; - break; - case TangoConst.Tango_DEV_FLOAT: - float[] valueFloat = { Float.parseFloat(scalarEvent[7]), Float.parseFloat(scalarEvent[8]) }; - value = valueFloat; - break; - case TangoConst.Tango_DEV_DOUBLE: - double[] valueDouble = { Double.parseDouble(scalarEvent[7]), Double.parseDouble(scalarEvent[8]) }; - value = valueDouble; - break; - default: - value = null; - break; - } - break; - } - return value; - } - - public String[] toArray() { - String[] scalarEvent; - scalarEvent = new String[9]; - scalarEvent[0] = getAttributeCompleteName(); - scalarEvent[1] = Integer.toString(getDataFormat()); - scalarEvent[2] = Integer.toString(getDataType()); - scalarEvent[3] = Integer.toString(getWritable()); - scalarEvent[4] = Integer.toString(getAttId()); - scalarEvent[5] = Integer.toString(getSnapId()); - scalarEvent[6] = getSnapDate().toString(); - scalarEvent[7] = valueToString(0); - scalarEvent[8] = valueToString(1); - return scalarEvent; - } - - public String valueToString(int pos) { - String nullvalue = "NULL"; - String value = nullvalue; - switch (getDataFormat()) { - case AttrDataFormat._SCALAR: - switch (getWritable()) { - case AttrWriteType._READ: - if (pos == 0) { - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - value = (String) getValue(); - break; - case TangoConst.Tango_DEV_STATE: - if (getValue() instanceof DevState) { - value = "" + ((DevState) getValue()).value(); - } else if ((getValue() instanceof int[])) { - value = ""; - int[] tab = (int[]) getValue(); - for (int i = 0; i < tab.length; i++) { - value += tab[i] + GlobalConst.CLOB_SEPARATOR; - } - if (tab.length > 0) { - value = value.substring(0, value.length() - 1); - } - } else - value = (String) getValue(); - break; - case TangoConst.Tango_DEV_UCHAR: - value = ((Byte) getValue()).toString(); - break; - case TangoConst.Tango_DEV_LONG: - value = ((Integer) getValue()).toString(); - break; - case TangoConst.Tango_DEV_ULONG: - value = ((Integer) getValue()).toString(); - break; - case TangoConst.Tango_DEV_BOOLEAN: - value = ((Boolean) getValue()).toString(); - break; - case TangoConst.Tango_DEV_SHORT: - value = ((Short) getValue()).toString(); - break; - case TangoConst.Tango_DEV_USHORT: - value = ((Short) getValue()).toString(); - break; - case TangoConst.Tango_DEV_FLOAT: - value = ((Float) getValue()).toString(); - break; - case TangoConst.Tango_DEV_DOUBLE: - value = ((Double) getValue()).toString(); - break; - default: - value = nullvalue; - break; - } - } - break; - case AttrWriteType._READ_WRITE: - case AttrWriteType._READ_WITH_WRITE: - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - value = ((String[]) getValue())[pos]; - break; - case TangoConst.Tango_DEV_STATE: - if (getValue() instanceof DevState) { - value = "" + ((DevState) getValue()).value(); - } else if ((getValue() instanceof int[])) { - value = ""; - int[] tab = (int[]) getValue(); - value += tab[pos]; - } else - value = ((String[]) getValue())[pos]; - break; - case TangoConst.Tango_DEV_UCHAR: - value = ((byte[]) getValue())[pos] + ""; - break; - case TangoConst.Tango_DEV_LONG: - case TangoConst.Tango_DEV_ULONG: - value = ((int[]) getValue())[pos] + ""; - break; - case TangoConst.Tango_DEV_BOOLEAN: - value = ((boolean[]) getValue())[pos] + ""; - break; - case TangoConst.Tango_DEV_SHORT: - case TangoConst.Tango_DEV_USHORT: - value = ((short[]) getValue())[pos] + ""; - break; - case TangoConst.Tango_DEV_FLOAT: - value = ((float[]) getValue())[pos] + ""; - break; - case TangoConst.Tango_DEV_DOUBLE: - value = ((double[]) getValue())[pos] + ""; - break; - default: - value = nullvalue; - break; - } - break; - case AttrWriteType._WRITE: - if (pos == 1) { - switch (getDataType()) { - case TangoConst.Tango_DEV_STRING: - value = (String) getValue(); - break; - case TangoConst.Tango_DEV_STATE: - if (getValue() instanceof DevState) { - value = "" + ((DevState) getValue()).value(); - } else if ((getValue() instanceof int[])) { - value = ""; - int[] tab = (int[]) getValue(); - for (int i = 0; i < tab.length; i++) { - value += tab[i] + GlobalConst.CLOB_SEPARATOR; - } - if (tab.length > 0) { - value = value.substring(0, value.length() - 1); - } - } else - value = (String) getValue(); - break; - case TangoConst.Tango_DEV_UCHAR: - value = ((Byte) getValue()).toString(); - break; - case TangoConst.Tango_DEV_LONG: - value = ((Integer) getValue()).toString(); - break; - case TangoConst.Tango_DEV_ULONG: - value = ((Integer) getValue()).toString(); - break; - case TangoConst.Tango_DEV_BOOLEAN: - value = ((Boolean) getValue()).toString(); - break; - case TangoConst.Tango_DEV_SHORT: - value = ((Short) getValue()).toString(); - break; - case TangoConst.Tango_DEV_USHORT: - value = ((Short) getValue()).toString(); - break; - case TangoConst.Tango_DEV_FLOAT: - value = ((Float) getValue()).toString(); - break; - case TangoConst.Tango_DEV_DOUBLE: - value = ((Double) getValue()).toString(); - break; - default: - value = nullvalue; - break; - } - } - break; - } - break; - case AttrDataFormat._SPECTRUM: - value = ((String) getValue()).toString(); - break; - case AttrDataFormat._IMAGE: - value = ((String) getValue()).toString(); - break; - } - return value; - } -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapConst.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapConst.java index 120c82b..4e32567 100644 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapConst.java +++ b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapConst.java @@ -203,7 +203,7 @@ public class SnapConst { * Array that contains the name's fields for the HDB Mode Table */ public static final String ID_ATT = "id_att"; - public static final String[] TAB_LIST = { ID_CONTEXT, ID_ATT }; // 0 -> + // 2 /** diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RO.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RO.java deleted file mode 100644 index df17d89..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RO.java +++ /dev/null @@ -1,133 +0,0 @@ -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/SnapImageEvent_RO.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class SnapImageEvent_RO. -// (Chinkumo Jean) - Mar 26, 2004 -// -// $Author: ounsy $ -// -// $Revision: 1.4 $ -// -// $Log: SnapImageEvent_RO.java,v $ -// Revision 1.4 2006/10/31 16:54:24 ounsy -// milliseconds and null values management -// -// Revision 1.3 2006/06/28 12:43:58 ounsy -// image support -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.16.1 2005/11/15 13:34:38 chinkumo -// no message -// -// Revision 1.1 2005/01/26 15:35:37 chinkumo -// Ultimate synchronization before real sharing. -// -// Revision 1.1 2004/12/06 17:39:56 chinkumo -// First commit (new API architecture). -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -public class SnapImageEvent_RO extends SnapAttribute { - private int dimX; - private int dimY; - - public SnapImageEvent_RO() { - super(); - } - - public SnapImageEvent_RO(String[] snapImageEvent_RO) { - setAttributeCompleteName(snapImageEvent_RO[0]); - setAttId(Integer.parseInt(snapImageEvent_RO[1])); - setSnapId(Integer.parseInt(snapImageEvent_RO[2])); - setSnapDate(Timestamp.valueOf(snapImageEvent_RO[3])); - setDimX(Integer.parseInt(snapImageEvent_RO[4])); - setDimY(Integer.parseInt(snapImageEvent_RO[5])); - - double[][] value = new double[dimY][dimX]; - int k = 6; - for (int i = 0; i < dimY; i++) { - for (int j = 0; j < dimX; j++) { - value[i][j] = Double.parseDouble(snapImageEvent_RO[k++]); - } - } - this.setImageValueRO(value, null); - } - - public int getDimX() { - return dimX; - } - - public void setDimX(int dimX) { - this.dimX = dimX; - } - - public int getDimY() { - return dimY; - } - - public void setDimY(int dimY) { - this.dimY = dimY; - } - - public double[][] getImageValueRO() { - return (double[][]) getValue(); - } - - public void setImageValueRO(double[][] value, boolean[][] nullElements) { - setValue(value, nullElements); - } - - /** - * Returns an array representation of the object <I>SnapImageEvent_RO</I>. - * - * @return an array representation of the object <I>SnapImageEvent_RO</I>. - */ - public String[] toArray() { - double[][] value = (double[][]) getValue(); - if (value == null) - return null; - int dimY = value.length; - if (dimY == 0) - return new String[0]; - int dimX = value[0].length; - String[] snapImageEvent_RO = new String[6 + dimX * dimY]; - - snapImageEvent_RO[0] = getAttributeCompleteName(); // name - snapImageEvent_RO[1] = Integer.toString(getAttId()); // id_context - snapImageEvent_RO[2] = Integer.toString(getSnapId()); // id_snap - snapImageEvent_RO[3] = getSnapDate().toString(); // time - snapImageEvent_RO[4] = Integer.toString(dimX); // dimX - snapImageEvent_RO[5] = Integer.toString(dimY); // dimX - - int k = 6; - for (int i = 0; i < dimY; i++) { - for (int j = 0; j < dimX; j++) { - snapImageEvent_RO[k] = value[i][j] + ""; - k++; - } - } - return snapImageEvent_RO; - } - - @Override - public String toString() { - String snapImageEvent_RO = ""; - snapImageEvent_RO = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute ID : \t" + getAttId() - + "\r\n" + "Snap ID : \t" + getSnapId() + "\r\n" + "Snap Time : \t" + getSnapDate() + "\r\n" - + "Dim x : \t" + getDimX() + "\r\n" + "Dim y : \t" + getDimY() + "\r\n" + "Value : \t..." + "\r\n"; - return snapImageEvent_RO; - } -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RW.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RW.java deleted file mode 100644 index 73e8548..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapImageEvent_RW.java +++ /dev/null @@ -1,180 +0,0 @@ -// +====================================================================== -// $Source$ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class SnapImageEvent_RW. -// (GIRARDOT Raphaël) - Jun 21, 2006 -// -// $Author$ -// -// $Revision: -// -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -public class SnapImageEvent_RW extends SnapAttribute { - - public static final String NOT_CODING = "#"; - - private int dimX = 0; - private int dimY = 0; - private int dimXWrite = 0; - private int dimYWrite = 0; - - public SnapImageEvent_RW() { - super(); - } - - public SnapImageEvent_RW(String[] snapImageEvent_RW) { - setAttributeCompleteName(snapImageEvent_RW[0]); - setAttId(Integer.parseInt(snapImageEvent_RW[1])); - setSnapId(Integer.parseInt(snapImageEvent_RW[2])); - setSnapDate(Timestamp.valueOf(snapImageEvent_RW[3])); - setDimX(Integer.parseInt(snapImageEvent_RW[4])); - setDimY(Integer.parseInt(snapImageEvent_RW[5])); - setDimXWrite(Integer.parseInt(snapImageEvent_RW[6])); - setDimYWrite(Integer.parseInt(snapImageEvent_RW[7])); - - double[][] value = new double[dimY + dimYWrite][max(dimX, dimXWrite)]; - int k = 8; - for (int i = 0; i < dimY; i++) { - for (int j = 0; j < dimX; j++) { - value[i][j] = Double.parseDouble(snapImageEvent_RW[k++]); - } - } - for (int i = dimY; i < dimY + dimYWrite; i++) { - for (int j = 0; j < dimXWrite; j++) { - value[i][j] = Double.parseDouble(snapImageEvent_RW[k++]); - } - } - setImageValueRW(value, null); - } - - public int getDimX() { - return dimX; - } - - public void setDimX(int dim_x) { - this.dimX = dim_x; - } - - public int getDimY() { - return dimY; - } - - public void setDimY(int dim_y) { - this.dimY = dim_y; - } - - public int getDimXWrite() { - return dimXWrite; - } - - public void setDimXWrite(int dim_x_write) { - this.dimXWrite = dim_x_write; - } - - public int getDimYWrite() { - return dimYWrite; - } - - public void setDimYWrite(int dim_y_write) { - this.dimYWrite = dim_y_write; - } - - public double[][] getImageValueRW() { - return (double[][]) getValue(); - } - - public void setImageValueRW(double[][] value, boolean[][] nullElements) { - setValue(value, nullElements); - } - - public double[][] getImageValueRWRead() { - double[][] read = new double[dimY][dimX]; - for (int i = 0; i < dimY; i++) { - for (int j = 0; j < dimX; j++) { - read[i][j] = getImageValueRW()[i][j]; - } - } - return read; - } - - public double[][] getImageValueRWWrite() { - double[][] write = new double[dimYWrite][dimXWrite]; - for (int i = dimY; i < dimY + dimYWrite; i++) { - for (int j = 0; j < dimXWrite; j++) { - write[i][j] = getImageValueRW()[i][j]; - } - } - return write; - } - - /** - * Returns an array representation of the object <I>SnapImageEvent_RO</I>. - * - * @return an array representation of the object <I>SnapImageEvent_RO</I>. - */ - public String[] toArray() { - double[][] value = (double[][]) getValue(); - int dim_x = value[0].length; - int dim_y = value.length; - String[] snapImageEvent_RO = new String[8 + (dim_x + dimXWrite) * max(dim_y, dimYWrite)]; - - snapImageEvent_RO[0] = getAttributeCompleteName(); // name - snapImageEvent_RO[1] = Integer.toString(getAttId()); // id_context - snapImageEvent_RO[2] = Integer.toString(getSnapId()); // id_snap - snapImageEvent_RO[3] = getSnapDate().toString(); // time - snapImageEvent_RO[4] = Integer.toString(dim_x); // dim_x - snapImageEvent_RO[5] = Integer.toString(dim_y); // dim_y - snapImageEvent_RO[6] = Integer.toString(dimXWrite); // dim_x_write - snapImageEvent_RO[7] = Integer.toString(dimYWrite); // dim_y_write - - int k = 8; - for (int i = 0; i < snapImageEvent_RO.length - k; i++) { - snapImageEvent_RO[i + k] = NOT_CODING; - } - - for (int i = 0; i < dim_y; i++) { - for (int j = 0; j < dim_x; j++) { - snapImageEvent_RO[k] = value[i][j] + ""; - k++; - } - } - for (int i = dim_y; i < dim_y + dimYWrite; i++) { - for (int j = 0; j < dimXWrite; j++) { - snapImageEvent_RO[k] = value[i][j] + ""; - k++; - } - } - return snapImageEvent_RO; - } - - @Override - public String toString() { - String snapImageEvent_RO = ""; - snapImageEvent_RO = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute ID : \t" + getAttId() - + "\r\n" + "Snap ID : \t" + getSnapId() + "\r\n" + "Snap Time : \t" + getSnapDate() + "\r\n" - + "Dim x : \t" + getDimX() + "\r\n" + "Dim y : \t" + getDimY() + "\r\n" + "Dim x write : \t" - + getDimXWrite() + "\r\n" + "Dim y write : \t" + getDimYWrite() + "\r\n" + "Value : \t..." + "\r\n"; - return snapImageEvent_RO; - } - - private int max(int x, int y) { - if (x > y) - return x; - else - return y; - } - -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RO.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RO.java deleted file mode 100644 index ea2777d..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RO.java +++ /dev/null @@ -1,83 +0,0 @@ -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/SnapScalarEvent_RO.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class SnapScalarEvent_RO. -// (Chinkumo Jean) - 24, 2004 -// -// $Author: ounsy $ -// -// $Revision: 1.3 $ -// -// $Log: SnapScalarEvent_RO.java,v $ -// Revision 1.3 2006/10/31 16:54:24 ounsy -// milliseconds and null values management -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.16.1 2005/11/15 13:34:38 chinkumo -// no message -// -// Revision 1.1 2005/01/26 15:35:37 chinkumo -// Ultimate synchronization before real sharing. -// -// Revision 1.1 2004/12/06 17:39:56 chinkumo -// First commit (new API architecture). -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -public class SnapScalarEvent_RO extends SnapAttribute { - public SnapScalarEvent_RO() { - } - - public SnapScalarEvent_RO(String[] snapScalarEvent_RO) { - setAttributeCompleteName(snapScalarEvent_RO[0]); - setAttId(Integer.parseInt(snapScalarEvent_RO[1])); - setSnapId(Integer.parseInt(snapScalarEvent_RO[2])); - setSnapDate(Timestamp.valueOf(snapScalarEvent_RO[3])); - - setScalarValue(Double.valueOf(snapScalarEvent_RO[4]), null); - } - - public void setScalarValue(Double d, Boolean nullElements) { - setValue(d, nullElements); - } - - public Double getScalarValueRO() { - return (Double) getValue(); - } - - public String[] toArray() { - Double d = (Double) getValue(); - String snapScalarEvent_RO[] = new String[5]; - - snapScalarEvent_RO[0] = getAttributeCompleteName().trim(); - snapScalarEvent_RO[1] = Integer.toString(getAttId()); - snapScalarEvent_RO[2] = Integer.toString(getSnapId()); - - snapScalarEvent_RO[3] = getSnapDate().toString().trim(); - snapScalarEvent_RO[4] = d + ""; - return snapScalarEvent_RO; - } - - @Override - public String toString() { - String snapSpectrumEvent_RO = ""; - snapSpectrumEvent_RO = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute ID : \t" + getAttId() - + "\r\n" + "Snap ID : \t" + getSnapId() + "\r\n" + "Snap Time : \t" + getSnapDate() + "\r\n" - + "Value : \t" + getScalarValueRO() + "\r\n"; - return snapSpectrumEvent_RO; - } - -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RW.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RW.java deleted file mode 100644 index c9fa1b6..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_RW.java +++ /dev/null @@ -1,98 +0,0 @@ -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/SnapScalarEvent_RW.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class SnapScalarEvent_RW. -// (Chinkumo Jean) - 24, 2004 -// -// $Author: ounsy $ -// -// $Revision: 1.4 $ -// -// $Log: SnapScalarEvent_RW.java,v $ -// Revision 1.4 2006/10/31 16:54:24 ounsy -// milliseconds and null values management -// -// Revision 1.3 2006/05/04 14:35:31 ounsy -// minor changes (commented useless methods and variables) -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.16.1 2005/11/15 13:34:38 chinkumo -// no message -// -// Revision 1.1 2005/01/26 15:35:37 chinkumo -// Ultimate synchronization before real sharing. -// -// Revision 1.1 2004/12/06 17:39:56 chinkumo -// First commit (new API architecture). -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -public class SnapScalarEvent_RW extends SnapAttribute { - public SnapScalarEvent_RW() { - } - - public SnapScalarEvent_RW(String[] snapScalarEvent_RW) { - setAttributeCompleteName(snapScalarEvent_RW[0]); - setAttId(Integer.parseInt(snapScalarEvent_RW[1])); - setSnapId(Integer.parseInt(snapScalarEvent_RW[2])); - setSnapDate(Timestamp.valueOf(snapScalarEvent_RW[3])); - - double[] value = new double[2]; - value[0] = Double.parseDouble(snapScalarEvent_RW[4]); - value[1] = Double.parseDouble(snapScalarEvent_RW[5]); - this.setScalarValueRW(value, null); - } - - public void setScalarValueRW(double[] value, boolean[] nullElements) { - /* - * double[] tmp = new double[ 2 ]; tmp = value; - */ - setValue(value, nullElements); - } - - public double[] getScalarValueRW() { - double[] value = new double[2]; - value = (double[]) getValue(); - return value; - } - - public String[] toArray() { - double[] value = getScalarValueRW(); - String snapScalarEvent_RW[] = new String[6]; - - snapScalarEvent_RW[0] = getAttributeCompleteName().trim(); - snapScalarEvent_RW[1] = Integer.toString(getAttId()); - snapScalarEvent_RW[2] = Integer.toString(getSnapId()); - - snapScalarEvent_RW[3] = getSnapDate().toString().trim(); - snapScalarEvent_RW[4] = value[0] + ""; - snapScalarEvent_RW[5] = value[1] + ""; - return snapScalarEvent_RW; - } - - @Override - public String toString() { - String snapScalarEvent_RW_String = ""; - - snapScalarEvent_RW_String = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute Id : \t" - + Integer.toString(getAttId()) + "\r\n" + "Snap Id : \t" + Integer.toString(getSnapId()) + "\r\n" - + "Snap time : \t" + getSnapDate().toString().trim() + "\r\n" + "Value READ: \t" - + getScalarValueRW()[0] + "\r\n" + "Value WRITE: \t" + getScalarValueRW()[1] + "\r\n"; - - return snapScalarEvent_RW_String; - } - -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_WO.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_WO.java deleted file mode 100644 index 9fc0cc5..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapScalarEvent_WO.java +++ /dev/null @@ -1,81 +0,0 @@ -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/SnapScalarEvent_WO.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class SnapScalarEvent_WO. -// (Chinkumo Jean) - 24, 2004 -// -// $Author: chinkumo $ -// -// $Revision: 1.2 $ -// -// $Log: SnapScalarEvent_WO.java,v $ -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.16.1 2005/11/15 13:34:38 chinkumo -// no message -// -// Revision 1.1 2005/01/26 15:35:37 chinkumo -// Ultimate synchronization before real sharing. -// -// Revision 1.1 2004/12/06 17:39:56 chinkumo -// First commit (new API architecture). -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== - -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -public class SnapScalarEvent_WO extends SnapAttribute { - public SnapScalarEvent_WO() { - } - - public SnapScalarEvent_WO(String[] snapScalarEvent_WO) { - setAttributeCompleteName(snapScalarEvent_WO[0]); - setAttId(Integer.parseInt(snapScalarEvent_WO[1])); - setSnapId(Integer.parseInt(snapScalarEvent_WO[2])); - setSnapDate(Timestamp.valueOf(snapScalarEvent_WO[3])); - - setScalarValue(Double.parseDouble(snapScalarEvent_WO[4]), null); - } - - public void setScalarValue(double d, Boolean nullElements) { - setValue(Double.valueOf(d), nullElements); - } - - public double getScalarValueWO() { - return ((Double) getValue()).doubleValue(); - } - - public String[] toArray() { - double d = ((Double) getValue()).doubleValue(); - String snapScalarEvent_WO[] = new String[5]; - - snapScalarEvent_WO[0] = getAttributeCompleteName().trim(); - snapScalarEvent_WO[1] = Integer.toString(getAttId()); - snapScalarEvent_WO[2] = Integer.toString(getSnapId()); - - snapScalarEvent_WO[3] = getSnapDate().toString().trim(); - snapScalarEvent_WO[4] = Double.toString(d).trim(); - return snapScalarEvent_WO; - } - - @Override - public String toString() { - String snapSpectrumEvent_WO = ""; - snapSpectrumEvent_WO = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute ID : \t" + getAttId() - + "\r\n" + "Snap ID : \t" + getSnapId() + "\r\n" + "Snap Time : \t" + getSnapDate() + "\r\n" - + "Value : \t" + getScalarValueWO() + "\r\n"; - return snapSpectrumEvent_WO; - } - -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RO.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RO.java deleted file mode 100644 index c8a94ff..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RO.java +++ /dev/null @@ -1,114 +0,0 @@ -//+====================================================================== -// $Source: /cvsroot/tango-cs/tango/api/java/fr/soleil/TangoSnapshoting/SnapshotingTools/Tools/SnapSpectrumEvent_RO.java,v $ -// -// Project: Tango Archiving Service -// -// Description: Java source code for the class SnapSpectrumEvent_RO. -// (Chinkumo Jean) - Mar 26, 2004 -// -// $Author: ounsy $ -// -// $Revision: 1.4 $ -// -// $Log: SnapSpectrumEvent_RO.java,v $ -// Revision 1.4 2006/10/31 16:54:24 ounsy -// milliseconds and null values management -// -// Revision 1.3 2006/04/11 14:36:00 ounsy -// new spectrum types support -// -// Revision 1.2 2005/11/29 17:11:17 chinkumo -// no message -// -// Revision 1.1.16.1 2005/11/15 13:34:38 chinkumo -// no message -// -// Revision 1.1 2005/01/26 15:35:37 chinkumo -// Ultimate synchronization before real sharing. -// -// Revision 1.1 2004/12/06 17:39:56 chinkumo -// First commit (new API architecture). -// -// -// copyleft : Synchrotron SOLEIL -// L'Orme des Merisiers -// Saint-Aubin - BP 48 -// 91192 GIF-sur-YVETTE CEDEX -// -//-====================================================================== - -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; - -public class SnapSpectrumEvent_RO extends SnapAttribute { - private int dim_x; - private int dim_y = 0; - - public SnapSpectrumEvent_RO() { - super(); - } - - public SnapSpectrumEvent_RO(String[] snapSpectrumEvent_RO) { - setAttributeCompleteName(snapSpectrumEvent_RO[0]); - setAttId(Integer.parseInt(snapSpectrumEvent_RO[1])); - setSnapId(Integer.parseInt(snapSpectrumEvent_RO[2])); - setSnapDate(Timestamp.valueOf(snapSpectrumEvent_RO[3])); - setDim_x(Integer.parseInt(snapSpectrumEvent_RO[4])); - // setDim_y(Integer.parseInt(snapSpectrumEvent_RO[5])); - - double[] value = new double[snapSpectrumEvent_RO.length - 6]; - for (int i = 0; i < value.length; i++) { - value[i] = Double.parseDouble(snapSpectrumEvent_RO[i + 6]); - } - setValue(value, null); - } - - public int getDim_x() { - return dim_x; - } - - public void setDim_x(int dim_x) { - this.dim_x = dim_x; - } - - public int getDim_y() { - return dim_y; - } - - public void setDim_y(int dim_y) { - this.dim_y = 0; - } - - /** - * Returns an array representation of the object - * <I>SnapSpectrumEvent_RO</I>. - * - * @return an array representation of the object - * <I>SnapSpectrumEvent_RO</I>. - */ - public String[] toArray() { - double[] value = (double[]) getValue(); - String[] snapSpectrumEvent_RO = new String[6 + value.length]; - snapSpectrumEvent_RO[0] = getAttributeCompleteName(); // name - snapSpectrumEvent_RO[1] = Integer.toString(getAttId()); // id_context - snapSpectrumEvent_RO[2] = Integer.toString(getSnapId()); // id_snap - snapSpectrumEvent_RO[3] = getSnapDate().toString(); // time - snapSpectrumEvent_RO[4] = Integer.toString(dim_x); // dim_x - snapSpectrumEvent_RO[5] = Integer.toString(dim_y); // dim_y - - for (int i = 0; i < value.length; i++) { - snapSpectrumEvent_RO[i + 6] = value[i] + ""; - } - return snapSpectrumEvent_RO; - } - - @Override - public String toString() { - String snapSpectrumEvent_RO = ""; - snapSpectrumEvent_RO = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute ID : \t" + getAttId() - + "\r\n" + "Snap ID : \t" + getSnapId() + "\r\n" + "Snap Time : \t" + getSnapDate() + "\r\n" - + "Dim x : \t" + getDim_x() + "\r\n" + "Dim y : \t" + getDim_y() + "\r\n" + "Value : \t..." + "\r\n"; - return snapSpectrumEvent_RO; - } -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RW.java b/src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RW.java deleted file mode 100644 index ffa0425..0000000 --- a/src/main/java/fr/soleil/archiving/snap/api/tools/SnapSpectrumEvent_RW.java +++ /dev/null @@ -1,482 +0,0 @@ -/* - * Synchrotron Soleil - * - * File : SnapSpectrumEvent_RW.java - * - * Project : apiDev - * - * Description : - * - * Author : SOLEIL - * - * Original : 7 févr. 2006 - * - * Revision: Author: - * Date: State: - * - * Log: SnapSpectrumEvent_RW.java,v - */ -package fr.soleil.archiving.snap.api.tools; - -import java.sql.Timestamp; -import java.util.Arrays; - -import fr.soleil.archiving.common.api.tools.GlobalConst; - -/** - * @author SOLEIL - */ -public class SnapSpectrumEvent_RW extends SnapAttribute { - private int dim_x; - private final int dim_y = 0; - - public SnapSpectrumEvent_RW() { - super(); - } - - public int getDim_x() { - return dim_x; - } - - public void setDim_x(int dim_x) { - this.dim_x = dim_x; - } - - public int getDim_y() { - return dim_y; - } - - /** - * Creates a new instance of Spectrum Event - */ - public SnapSpectrumEvent_RW(String[] snapSpectrumEvent_RO) { - setAttributeCompleteName(snapSpectrumEvent_RO[0]); - setAttId(Integer.parseInt(snapSpectrumEvent_RO[1])); - setSnapId(Integer.parseInt(snapSpectrumEvent_RO[2])); - setSnapDate(Timestamp.valueOf(snapSpectrumEvent_RO[3])); - setDim_x(Integer.parseInt(snapSpectrumEvent_RO[4])); - // setDim_y(Integer.parseInt(snapSpectrumEvent_RO[5])); - - double[] value = new double[snapSpectrumEvent_RO.length - 6]; - for (int i = 0; i < value.length; i++) { - value[i] = Double.parseDouble(snapSpectrumEvent_RO[i + 6]); - } - setValue(value, null); - } - - /** - * This method returns the value of this spectrum event. The returned value - * is then formated as a String. - * - * @return the value of this spectrum event. - */ - public String getValue_AsString() { - Object value = getValue(); - StringBuilder valueStr = new StringBuilder(); - if (value instanceof double[]) { - for (int i = 0; i < ((double[]) value).length - 1; i++) { - valueStr.append(((double[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((double[]) value)[((double[]) value).length - 1]); - } else if (value instanceof byte[]) { - for (int i = 0; i < ((byte[]) value).length - 1; i++) { - valueStr.append(((byte[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((byte[]) value)[((byte[]) value).length - 1]); - } else if (value instanceof short[]) { - for (int i = 0; i < ((short[]) value).length - 1; i++) { - valueStr.append(((short[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((short[]) value)[((short[]) value).length - 1]); - } else if (value instanceof int[]) { - for (int i = 0; i < ((int[]) value).length - 1; i++) { - valueStr.append(((int[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((int[]) value)[((int[]) value).length - 1]); - } else if (value instanceof float[]) { - for (int i = 0; i < ((float[]) value).length - 1; i++) { - valueStr.append(((float[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((float[]) value)[((float[]) value).length - 1]); - } else if (value instanceof boolean[]) { - for (int i = 0; i < ((boolean[]) value).length - 1; i++) { - valueStr.append(((boolean[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((boolean[]) value)[((boolean[]) value).length - 1]); - } else if (value instanceof String[]) { - for (int i = 0; i < ((String[]) value).length - 1; i++) { - valueStr.append(((String[]) value)[i]).append(GlobalConst.CLOB_SEPARATOR); - } - valueStr.append(((String[]) value)[((String[]) value).length - 1]); - } else { - valueStr.append(value.toString()); - } - return valueStr.toString(); - } - - /** - * Returns an array representation of the object - * <I>SnapSpectrumEvent_RO</I>. - * - * @return an array representation of the object - * <I>SnapSpectrumEvent_RO</I>. - */ - public String[] toArray() { - double[] value = (double[]) getValue(); - String[] snapSpectrumEvent_RO = new String[6 + value.length]; - snapSpectrumEvent_RO[0] = getAttributeCompleteName(); // name - snapSpectrumEvent_RO[1] = Integer.toString(getAttId()); // id_context - snapSpectrumEvent_RO[2] = Integer.toString(getSnapId()); // id_snap - snapSpectrumEvent_RO[3] = getSnapDate().toString(); // time - snapSpectrumEvent_RO[4] = Integer.toString(dim_x); // dim_x - snapSpectrumEvent_RO[5] = Integer.toString(dim_y); // dim_y - - for (int i = 0; i < value.length; i++) { - snapSpectrumEvent_RO[i + 6] = value[i] + ""; - } - return snapSpectrumEvent_RO; - } - - @Override - public String toString() { - String snapSpectrumEvent_RO = ""; - snapSpectrumEvent_RO = "Source : \t" + getAttributeCompleteName() + "\r\n" + "Attribute ID : \t" + getAttId() - + "\r\n" + "Snap ID : \t" + getSnapId() + "\r\n" + "Snap Time : \t" + getSnapDate() + "\r\n" - + "Dim x : \t" + getDim_x() + "\r\n" + "Dim y : \t" + getDim_y() + "\r\n" + "Value : \t..." + "\r\n"; - return snapSpectrumEvent_RO; - } - - /** - * @return - */ - public Object getSpectrumValueRWRead() { - Object value = getValue(); - if (value == null) { - return null; - } - int len = this.dim_x; - if (value instanceof double[]) { - double[] ret = Arrays.copyOf((double[]) value, len); - - return ret; - } else if (value instanceof byte[]) { - byte[] ret = Arrays.copyOf((byte[]) value, len); - - return ret; - } else if (value instanceof short[]) { - short[] ret = Arrays.copyOf((short[]) value, len); - - return ret; - } else if (value instanceof int[]) { - int[] ret = Arrays.copyOf((int[]) value, len); - - return ret; - } else if (value instanceof float[]) { - float[] ret = Arrays.copyOf((float[]) value, len); - - return ret; - } else if (value instanceof boolean[]) { - boolean[] ret = Arrays.copyOf((boolean[]) value, len); - - return ret; - } else if (value instanceof String[]) { - String[] ret = new String[len]; - for (int i = 0; i < len; i++) { - ret[i] = ((String[]) value)[i]; - } - - return ret; - } else { - return null; - } - } - - public Object getSpectrumValueRWWrite() { - Object value = getValue(); - if (value == null) { - return null; - } - if (value instanceof double[]) { - int len = ((double[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - double[] ret = new double[len]; - for (int i = this.dim_x; i < ((double[]) value).length; i++) { - ret[i - this.dim_x] = ((double[]) value)[i]; - } - - return ret; - } else if (value instanceof byte[]) { - int len = ((byte[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - byte[] ret = new byte[len]; - for (int i = this.dim_x; i < ((byte[]) value).length; i++) { - ret[i - this.dim_x] = ((byte[]) value)[i]; - } - - return ret; - } else if (value instanceof short[]) { - int len = ((short[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - short[] ret = new short[len]; - for (int i = this.dim_x; i < ((short[]) value).length; i++) { - ret[i - this.dim_x] = ((short[]) value)[i]; - } - - return ret; - } else if (value instanceof int[]) { - int len = ((int[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - int[] ret = new int[len]; - for (int i = this.dim_x; i < ((int[]) value).length; i++) { - ret[i - this.dim_x] = ((int[]) value)[i]; - } - - return ret; - } else if (value instanceof float[]) { - int len = ((float[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - float[] ret = new float[len]; - for (int i = this.dim_x; i < ((float[]) value).length; i++) { - ret[i - this.dim_x] = ((float[]) value)[i]; - } - - return ret; - } else if (value instanceof boolean[]) { - int len = ((boolean[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - boolean[] ret = new boolean[len]; - for (int i = this.dim_x; i < ((boolean[]) value).length; i++) { - ret[i - this.dim_x] = ((boolean[]) value)[i]; - } - - return ret; - } else if (value instanceof String[]) { - int len = ((String[]) value).length - this.dim_x; - if (len < 0) { - len = 0; - } - String[] ret = new String[len]; - for (int i = this.dim_x; i < ((String[]) value).length; i++) { - ret[i - this.dim_x] = ((String[]) value)[i]; - } - - return ret; - } else { - return null; - } - } - - /** - * @return - */ - public String getSpectrumValueRW_AsString_Read() { - Object value = getSpectrumValueRWRead(); - if (value == null) { - return ""; - } - if (value instanceof double[]) { - return convertDoubleTabToString((double[]) value); - } else if (value instanceof byte[]) { - return convertByteTabToString((byte[]) value); - } else if (value instanceof short[]) { - return convertShortTabToString((short[]) value); - } else if (value instanceof int[]) { - return convertIntTabToString((int[]) value); - } else if (value instanceof float[]) { - return convertFloatTabToString((float[]) value); - } else if (value instanceof boolean[]) { - return convertBooleanTabToString((boolean[]) value); - } else if (value instanceof String[]) { - return convertStringTabToString((String[]) value); - } else { - return null; - } - } - - /** - * @return - */ - public String getSpectrumValueRW_AsString_Write() { - Object value = getSpectrumValueRWWrite(); - if (value == null) { - return ""; - } - if (value instanceof double[]) { - return convertDoubleTabToString((double[]) value); - } else if (value instanceof byte[]) { - return convertByteTabToString((byte[]) value); - } else if (value instanceof short[]) { - return convertShortTabToString((short[]) value); - } else if (value instanceof int[]) { - return convertIntTabToString((int[]) value); - } else if (value instanceof float[]) { - return convertFloatTabToString((float[]) value); - } else if (value instanceof boolean[]) { - return convertBooleanTabToString((boolean[]) value); - } else if (value instanceof String[]) { - return convertStringTabToString((String[]) value); - } else { - return null; - } - } - - /** - * - * @param val - * @return - */ - private String convertDoubleTabToString(double[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - - /** - * - * @param val - * @return - */ - private String convertByteTabToString(byte[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - - /** - * - * @param val - * @return - */ - private String convertIntTabToString(int[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - - /** - * - * @param val - * @return - */ - private String convertShortTabToString(short[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - - /** - * - * @param val - * @return - */ - private String convertFloatTabToString(float[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - - /** - * - * @param val - * @return - */ - private String convertBooleanTabToString(boolean[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - - /** - * - * @param val - * @return - */ - private String convertStringTabToString(String[] val) { - if (val == null) { - return null; - } - StringBuilder valueStr = new StringBuilder(); - - for (int j = 0; j < val.length; j++) { - valueStr.append(val[j]); - if (j < val.length - 1) { - valueStr.append(GlobalConst.CLOB_SEPARATOR); - } - } - - return valueStr.toString(); - } - -} diff --git a/src/main/java/fr/soleil/archiving/snap/api/tools/TangoJAVAUtils.java b/src/main/java/fr/soleil/archiving/snap/api/tools/TangoJAVAUtils.java new file mode 100644 index 0000000..f3648b4 --- /dev/null +++ b/src/main/java/fr/soleil/archiving/snap/api/tools/TangoJAVAUtils.java @@ -0,0 +1,164 @@ +package fr.soleil.archiving.snap.api.tools; + +import java.sql.ResultSet; +import java.sql.SQLException; + +import fr.esrf.TangoDs.TangoConst; +import fr.soleil.archiving.common.api.tools.StringFormater; +import fr.soleil.lib.project.math.MathConst; + +public class TangoJAVAUtils { + + public static Object initPrimitiveArray(int dataType, int length) { + switch (dataType) { + case TangoConst.Tango_DEV_BOOLEAN: + return new boolean[length]; + case TangoConst.Tango_DEV_CHAR: + case TangoConst.Tango_DEV_UCHAR: + return new byte[length]; + case TangoConst.Tango_DEV_STATE: + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_ULONG: + return new int[length]; + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_USHORT: + return new short[length]; + case TangoConst.Tango_DEV_FLOAT: + return new float[length]; + case TangoConst.Tango_DEV_STRING: + return new String[length]; + case TangoConst.Tango_DEV_DOUBLE: + default: + return new double[length]; + } + + } + + public static Object castResultSetAsPrimitive(int dataType, ResultSet resultSet, int index) throws SQLException { + switch (dataType) { + case TangoConst.Tango_DEV_STRING: + return resultSet.getString(index); + case TangoConst.Tango_DEV_UCHAR: + case TangoConst.Tango_DEV_CHAR: + return resultSet.getByte(index); + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_ULONG: + case TangoConst.Tango_DEV_STATE: + return resultSet.getInt(index); + case TangoConst.Tango_DEV_BOOLEAN: + return resultSet.getInt(index) != 0; + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_USHORT: + return resultSet.getShort(index); + case TangoConst.Tango_DEV_FLOAT: + return resultSet.getFloat(index); + case TangoConst.Tango_DEV_DOUBLE: + default: + return resultSet.getDouble(index); + } + } + + public static Object cast(final int dataType, String currentValRead) { + try { + switch (dataType) { + case TangoConst.Tango_DEV_BOOLEAN: + return (int) Double.parseDouble(currentValRead) != 0; + case TangoConst.Tango_DEV_STATE: + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_ULONG: + return Integer.parseInt(currentValRead); + case TangoConst.Tango_DEV_LONG64: + case TangoConst.Tango_DEV_ULONG64: + return Long.parseLong(currentValRead); + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_USHORT: + return Short.parseShort(currentValRead); + case TangoConst.Tango_DEV_CHAR: + case TangoConst.Tango_DEV_UCHAR: + return Byte.parseByte(currentValRead); + case TangoConst.Tango_DEV_FLOAT: + return Float.parseFloat(currentValRead); + case TangoConst.Tango_DEV_DOUBLE: + return Double.parseDouble(currentValRead); + case TangoConst.Tango_DEV_STRING: + return StringFormater.formatStringToRead(currentValRead); + default: + return null; + } + } catch (NumberFormatException e) { + switch (dataType) { + case TangoConst.Tango_DEV_BOOLEAN: + return "true".equalsIgnoreCase(currentValRead.trim()); + case TangoConst.Tango_DEV_STATE: + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_ULONG: + return (int) Double.parseDouble(currentValRead); + case TangoConst.Tango_DEV_LONG64: + case TangoConst.Tango_DEV_ULONG64: + return (long) Double.parseDouble(currentValRead); + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_USHORT: + return (short) Double.parseDouble(currentValRead); + case TangoConst.Tango_DEV_CHAR: + case TangoConst.Tango_DEV_UCHAR: + return (byte) Double.parseDouble(currentValRead); + default: + return null; + } + } + } + + public static Object castResultSetAsObject(int dataType, ResultSet resultSet, int index) throws SQLException { + switch (dataType) { + case TangoConst.Tango_DEV_STRING: + return resultSet.getString(index); + case TangoConst.Tango_DEV_UCHAR: + case TangoConst.Tango_DEV_CHAR: + return Byte.valueOf(resultSet.getByte(index)); + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_ULONG: + case TangoConst.Tango_DEV_STATE: + return Integer.valueOf(resultSet.getInt(index)); + case TangoConst.Tango_DEV_BOOLEAN: + return Boolean.valueOf(resultSet.getInt(index) != 0); + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_USHORT: + return Short.valueOf(resultSet.getShort(index)); + case TangoConst.Tango_DEV_FLOAT: + return Float.valueOf(resultSet.getFloat(index)); + case TangoConst.Tango_DEV_DOUBLE: + default: + return Double.valueOf(resultSet.getDouble(index)); + } + } + + public static Object defaultValue(final int dataType) { + switch (dataType) { + case TangoConst.Tango_DEV_BOOLEAN: + return false; + case TangoConst.Tango_DEV_STATE: + case TangoConst.Tango_DEV_LONG: + case TangoConst.Tango_DEV_ULONG: + return 0; + case TangoConst.Tango_DEV_LONG64: + case TangoConst.Tango_DEV_ULONG64: + return 0l; + case TangoConst.Tango_DEV_SHORT: + case TangoConst.Tango_DEV_USHORT: + return (short) 0; + case TangoConst.Tango_DEV_CHAR: + case TangoConst.Tango_DEV_UCHAR: + return (byte) 0; + case TangoConst.Tango_DEV_FLOAT: + return Float.NaN; + case TangoConst.Tango_DEV_DOUBLE: + return MathConst.NAN_FOR_NULL; + default: + return null; + } + } + + public static boolean isNullOrNaN(final String value) { + return ((value == null) || value.isEmpty() || "null".equals(value) || "NaN".equalsIgnoreCase(value)); + } +} diff --git a/src/test/java/fr/soleil/archiving/snap/api/DataBaseAPITest.java b/src/test/java/fr/soleil/archiving/snap/api/DataBaseAPITest.java index de28f26..e14aa30 100644 --- a/src/test/java/fr/soleil/archiving/snap/api/DataBaseAPITest.java +++ b/src/test/java/fr/soleil/archiving/snap/api/DataBaseAPITest.java @@ -42,12 +42,6 @@ public class DataBaseAPITest { assertTrue(dbApi.getMaxContextID() > 0); } - @Test - public void getAllContextTest() throws SnapshotingException { - List<SnapContext> result = dbApi.getAllContext(); - assertNotNull(result); - assertFalse(result.isEmpty()); - } @Test public void getContextTest() throws SnapshotingException { @@ -73,20 +67,13 @@ public class DataBaseAPITest { @Test public void getContextAssociatedSnapshotsTest() throws SnapshotingException { - List<SnapshotLight> result = dbApi.getContextAssociatedSnapshots(-1); - assertTrue(result.isEmpty()); - - result = dbApi.getContextAssociatedSnapshots(76); - assertFalse(result.isEmpty()); - int expected = result.size(); - - result = dbApi.getContextAssociatedSnapshots("", -1, -1); + List<SnapshotLight> result = dbApi.getContextAssociatedSnapshots("", -1, -1); assertFalse(result.isEmpty()); assertEquals(31, result.size()); result = dbApi.getContextAssociatedSnapshots(" WHERE ID_CONTEXT=? ", 76, -1); assertFalse(result.isEmpty()); - assertEquals(expected, result.size()); + assertEquals(28, result.size()); result = dbApi.getContextAssociatedSnapshots(" WHERE ID_SNAP=? AND ID_CONTEXT=?", 76, 228); assertFalse(result.isEmpty()); -- GitLab