Revision: 6598
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6598&view=rev
Author: gerdwagner
Date: 2012-03-06 21:57:56 +0000 (Tue, 06 Mar 2012)
Log Message:
-----------
Hibernate Plugin:
- Support of hql results that return plain values instead of mapped objects. Mixes of plain values mapped objects are supported, too.
- Support of data changing hql statements.
Modified Paths:
--------------
trunk/sql12/doc/src/main/resources/changes.txt
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/mapping/MappedClassInfo.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HqlQueryResult.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/MappedClassInfoData.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstitute.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteFactory.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteRoot.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ObjectResultTabController.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/QueryListCreator.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/RootType.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ViewObjectsUtil.java
trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/I18NStrings.properties
Added Paths:
-----------
trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/PlainValue.java
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2012-03-06 21:57:56 UTC (rev 6598)
@@ -9,6 +9,11 @@
Enhancements:
+Hibernate Plugin:
+ - Support of hql results that return plain values instead of mapped objects. Mixes of plain values mapped objects are supported, too.
+ - Support of data changing hql statements.
+
+
DBCopy Plugin:
- Offers a new menu item "Paste table as ..." that allows to change the pasted table's name.
This function works if only a single table was copied.
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/mapping/MappedClassInfo.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/mapping/MappedClassInfo.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/mapping/MappedClassInfo.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -211,4 +211,8 @@
}
+ public boolean isPlainValueArray()
+ {
+ return _mappedClassInfoData.isPlainValueArray();
+ }
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HibernateServerConnectionImpl.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -245,12 +245,21 @@
{
ReflectionCaller rc = getRcHibernateSession().callMethod("createQuery", hqlQuery);
- if (0 <= sqlNbrRowsToShow)
+ if (isDataUpdate(hqlQuery))
{
- rc = rc.callMethod("setMaxResults", new RCParam().add(sqlNbrRowsToShow, Integer.TYPE));
+ int updateCount = (Integer)rc.callMethod("executeUpdate").getCallee();
+ ret.setUpdateCount(updateCount);
+ getRcHibernateSession().callMethod("getTransaction").callMethod("commit");
}
+ else
+ {
+ if (0 <= sqlNbrRowsToShow)
+ {
+ rc = rc.callMethod("setMaxResults", new RCParam().add(sqlNbrRowsToShow, Integer.TYPE));
+ }
- queryResList = (List) rc.callMethod("list").getCallee();
+ queryResList = (List) rc.callMethod("list").getCallee();
+ }
}
catch (Throwable t)
{
@@ -284,6 +293,16 @@
return ret;
}
+ private boolean isDataUpdate(String hqlQuery)
+ {
+ return null != hqlQuery
+ && (
+ hqlQuery.trim().toLowerCase().startsWith("insert")
+ || hqlQuery.trim().toLowerCase().startsWith("update")
+ || hqlQuery.trim().toLowerCase().startsWith("delete")
+ );
+ }
+
private Throwable prepareTransport(Throwable t)
{
if(false == _server)
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HqlQueryResult.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HqlQueryResult.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/HqlQueryResult.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -10,6 +10,7 @@
private Throwable _exceptionOccuredWhenExecutingQuery;
private HashMap<String, Throwable> _sessionAdminExceptions = new HashMap<String, Throwable>();
+ private Integer _updateCount;
public void putSessionAdminException(String msgKey, Throwable t)
{
@@ -40,4 +41,14 @@
{
return _sessionAdminExceptions;
}
+
+ public void setUpdateCount(int updateCount)
+ {
+ _updateCount = updateCount;
+ }
+
+ public Integer getUpdateCount()
+ {
+ return _updateCount;
+ }
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/MappedClassInfoData.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/MappedClassInfoData.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/MappedClassInfoData.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -9,6 +9,7 @@
private String _simpleMappedClassName;
private HibernatePropertyInfo _indentifierHibernatePropertyInfo;
private HibernatePropertyInfo[] _hibernatePropertyInfos;
+ private boolean _plainValueArray;
public MappedClassInfoData(String mappedClassName, String tableName, HibernatePropertyInfo indentifierHibernatePropertyInfo, HibernatePropertyInfo[] hibernatePropertyInfos)
{
@@ -70,4 +71,13 @@
return cpTokens[cpTokens.length - 1];
}
+ public boolean isPlainValueArray()
+ {
+ return _plainValueArray;
+ }
+
+ public void setPlainValueArray(boolean plainValueArray)
+ {
+ _plainValueArray = plainValueArray;
+ }
}
\ No newline at end of file
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstitute.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstitute.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstitute.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -1,7 +1,6 @@
package net.sourceforge.squirrel_sql.plugins.hibernate.server;
import java.io.Serializable;
-import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -12,6 +11,11 @@
private MappedClassInfoData _mappedClassInfoData;
private String _toString;
+
+ public static final String PLAIN_VALUES = "<plain values>";
+ private ArrayList<Object> _plainValueArray;
+ private HashMap<String, PlainValue> _plainValueByPropertyName = new HashMap<String, PlainValue>();
+
/**
* Is seriously meant to be package visible because it must not called nowhere except during initialzation in ObjectSubstituteFactory
*/
@@ -21,9 +25,43 @@
_toString = toString;
}
+ ObjectSubstitute(ArrayList<Object> plainValueArray)
+ {
+ _plainValueArray = plainValueArray;
+ _toString = PLAIN_VALUES + "[" + plainValueArray.size() + "]";
+
+
+ String className = null == plainValueArray.get(0) ? "<unknown>" : plainValueArray.get(0).getClass().getName();
+ String propertyName = "value " + (1);
+ HibernatePropertyInfo indentifierHibernatePropertyInfo = new HibernatePropertyInfo(propertyName, className, "<unknown>", new String[]{"<unknown>"});
+
+ _plainValueByPropertyName.put(propertyName, new PlainValue(plainValueArray.get(0), indentifierHibernatePropertyInfo));
+
+ HibernatePropertyInfo[] hibernatePropertyInfos = new HibernatePropertyInfo[plainValueArray.size() - 1];
+ for (int i = 1; i < plainValueArray.size(); i++)
+ {
+ className = null == plainValueArray.get(i) ? "<unknown>" : plainValueArray.get(i).getClass().getName();
+ propertyName = "value " + (i + 1);
+ hibernatePropertyInfos[i-1] = new HibernatePropertyInfo(propertyName, className, "<unknown>", new String[]{"<unknown>"});
+
+ _plainValueByPropertyName.put(propertyName, new PlainValue(plainValueArray.get(i), hibernatePropertyInfos[i-1]));
+ }
+
+
+ _mappedClassInfoData = new MappedClassInfoData(PLAIN_VALUES, "<unknown>", indentifierHibernatePropertyInfo, hibernatePropertyInfos);
+ _mappedClassInfoData.setPlainValueArray(true);
+ }
+
void putSubstituteValueByPropertyName(String propertyName, PropertySubstitute propertySubstitute)
{
- _substituteValueByPropertyName.put(propertyName, propertySubstitute);
+ if (null == _plainValueArray)
+ {
+ _substituteValueByPropertyName.put(propertyName, propertySubstitute);
+ }
+ else
+ {
+ throw new IllegalStateException("Should not be called for plain values");
+ }
}
public String getClassName()
@@ -36,17 +74,38 @@
*/
public Object getValue(String propertyName)
{
- return _substituteValueByPropertyName.get(propertyName).getSingleValue();
+ if (null == _plainValueArray)
+ {
+ return _substituteValueByPropertyName.get(propertyName).getSingleValue();
+ }
+ else
+ {
+ return _plainValueByPropertyName.get(propertyName).getValue();
+ }
}
public String getTypeName(String propertyName)
{
- return _substituteValueByPropertyName.get(propertyName).getHibernatePropertyInfo().getClassName();
+ if (null == _plainValueArray)
+ {
+ return _substituteValueByPropertyName.get(propertyName).getHibernatePropertyInfo().getClassName();
+ }
+ else
+ {
+ return _plainValueByPropertyName.get(propertyName).getHibernatePropertyInfo().getClassName();
+ }
}
public boolean wasInitialized(String propertyName)
{
- return _substituteValueByPropertyName.get(propertyName).isInitialized();
+ if (null == _plainValueArray)
+ {
+ return _substituteValueByPropertyName.get(propertyName).isInitialized();
+ }
+ else
+ {
+ return true;
+ }
}
public Collection<? extends ObjectSubstitute> getPersistentCollection(String propertyName)
@@ -56,17 +115,38 @@
public boolean isPersistenCollection(String propertyName)
{
- return _substituteValueByPropertyName.get(propertyName).isPersistenCollection();
+ if (null == _plainValueArray)
+ {
+ return _substituteValueByPropertyName.get(propertyName).isPersistenCollection();
+ }
+ else
+ {
+ return false;
+ }
}
public boolean isNull(String propertyName)
{
- return _substituteValueByPropertyName.get(propertyName).isNull(); //To change body of created methods use File | Settings | File Templates.
+ if (null == _plainValueArray)
+ {
+ return _substituteValueByPropertyName.get(propertyName).isNull();
+ }
+ else
+ {
+ return null == _plainValueByPropertyName.get(propertyName).getValue();
+ }
}
public HibernatePropertyInfo getHibernatePropertyInfo(String propertyName)
{
- return _substituteValueByPropertyName.get(propertyName).getHibernatePropertyInfo();
+ if (null == _plainValueArray)
+ {
+ return _substituteValueByPropertyName.get(propertyName).getHibernatePropertyInfo();
+ }
+ else
+ {
+ return _plainValueByPropertyName.get(propertyName).getHibernatePropertyInfo();
+ }
}
@Override
@@ -74,4 +154,16 @@
{
return _toString;
}
+
+ public MappedClassInfoData getPlainValueArrayMappedClassInfo()
+ {
+ if (null == _plainValueArray)
+ {
+ return null;
+ }
+ else
+ {
+ return _mappedClassInfoData;
+ }
+ }
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteFactory.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteFactory.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteFactory.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -41,16 +41,52 @@
if(o instanceof Object[])
{
ArrayList<ObjectSubstitute> arrBuf = new ArrayList<ObjectSubstitute>();
+ ArrayList<Object> plainValueArrBuf = new ArrayList<Object>();
Object[] arr = (Object[]) o;
for (Object entry : arr)
{
- arrBuf.add(_prepareObjectSubstitute(entry, infoDataByClassName, null ,doneObjs));
+ if(isMappedObject(entry, infoDataByClassName))
+ {
+ arrBuf.add(_prepareObjectSubstitute(entry, infoDataByClassName, null ,doneObjs));
+ }
+ else
+ {
+ plainValueArrBuf.add(entry);
+ }
}
- buf = new ObjectSubstituteRoot(arrBuf);
+
+ if(0 < plainValueArrBuf.size())
+ {
+ if (0 < arrBuf.size())
+ {
+ // result row is a mixture of plain values and mapped objects
+ arrBuf.add(new ObjectSubstitute(plainValueArrBuf));
+ buf = new ObjectSubstituteRoot(arrBuf);
+ }
+ else
+ {
+ // result row consists only of plain values
+ buf = new ObjectSubstituteRoot(new ObjectSubstitute(plainValueArrBuf));
+ }
+ }
+ else
+ {
+ // result row consists only of mapped objects
+ buf = new ObjectSubstituteRoot(arrBuf);
+ }
}
else
{
- buf = new ObjectSubstituteRoot(_prepareObjectSubstitute(o, infoDataByClassName, null,doneObjs));
+ if(isMappedObject(o, infoDataByClassName))
+ {
+ buf = new ObjectSubstituteRoot(_prepareObjectSubstitute(o, infoDataByClassName, null,doneObjs));
+ }
+ else
+ {
+ ArrayList<Object> plainValueArrBuf = new ArrayList<Object>();
+ plainValueArrBuf.add(o);
+ buf = new ObjectSubstituteRoot(new ObjectSubstitute(plainValueArrBuf));
+ }
}
ret.add(buf);
@@ -64,6 +100,11 @@
}
+ private boolean isMappedObject(Object entry, HashMap<String, MappedClassInfoData> infoDataByClassName)
+ {
+ return null != findMappedClassInfoData(entry, infoDataByClassName, null);
+ }
+
private ArrayList<ObjectSubstitute> _prepareObjectSubstitutesForCollection(Collection col, HashMap<String, MappedClassInfoData> infoDataByClassName, HashMap<Object, ObjectSubstitute> doneObjs)
{
try
@@ -158,12 +199,13 @@
private MappedClassInfoData findMappedClassInfoData(Object o, HashMap<String, MappedClassInfoData> infoDataByClassName, MappedClassInfoData infoDataFromProperty)
{
- MappedClassInfoData mappedClassInfoData;
+ MappedClassInfoData mappedClassInfoData = null;
+
if (null != infoDataFromProperty)
{
mappedClassInfoData = infoDataFromProperty;
}
- else
+ else if(null != o)
{
mappedClassInfoData = infoDataByClassName.get(o.getClass().getName());
@@ -178,10 +220,10 @@
}
}
- if(null == mappedClassInfoData)
- {
- throw new IllegalStateException("Could not find mapping infos for class: " + o.getClass().getName());
- }
+// if(null == mappedClassInfoData)
+// {
+// throw new IllegalStateException("Could not find mapping infos for class: " + o.getClass().getName());
+// }
return mappedClassInfoData;
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteRoot.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteRoot.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/ObjectSubstituteRoot.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -55,4 +55,26 @@
return ret;
}
+
+ public MappedClassInfoData getPlainValueArrayMappedClassInfo()
+ {
+ if(isArray())
+ {
+ for (ObjectSubstitute objectSubstitute : _objectSubstituteArray)
+ {
+ if(null != objectSubstitute.getPlainValueArrayMappedClassInfo())
+ {
+ // There can be just one PlainValueArray in a tuple
+ return objectSubstitute.getPlainValueArrayMappedClassInfo();
+ }
+ }
+
+ return null;
+
+ }
+ else
+ {
+ return _objectSubstitute.getPlainValueArrayMappedClassInfo();
+ }
+ }
}
Added: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/PlainValue.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/PlainValue.java (rev 0)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/server/PlainValue.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -0,0 +1,25 @@
+package net.sourceforge.squirrel_sql.plugins.hibernate.server;
+
+import java.io.Serializable;
+
+public class PlainValue implements Serializable
+{
+ private Object _value;
+ private HibernatePropertyInfo _hibernatePropertyInfo;
+
+ public PlainValue(Object value, HibernatePropertyInfo hibernatePropertyInfo)
+ {
+ _value = value;
+ _hibernatePropertyInfo = hibernatePropertyInfo;
+ }
+
+ public Object getValue()
+ {
+ return _value;
+ }
+
+ public HibernatePropertyInfo getHibernatePropertyInfo()
+ {
+ return _hibernatePropertyInfo;
+ }
+}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ObjectResultTabController.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ObjectResultTabController.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ObjectResultTabController.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -6,6 +6,7 @@
import net.sourceforge.squirrel_sql.plugins.hibernate.HibernateConnection;
import net.sourceforge.squirrel_sql.plugins.hibernate.mapping.MappedClassInfo;
import net.sourceforge.squirrel_sql.plugins.hibernate.HibernatePluginResources;
+import net.sourceforge.squirrel_sql.plugins.hibernate.server.MappedClassInfoData;
import net.sourceforge.squirrel_sql.plugins.hibernate.server.ObjectSubstitute;
import net.sourceforge.squirrel_sql.plugins.hibernate.server.ObjectSubstituteRoot;
import net.sourceforge.squirrel_sql.plugins.hibernate.util.HibernateSQLUtil;
@@ -71,11 +72,19 @@
ArrayList<MappedClassInfo> mappedClassInfos = con.getMappedClassInfos();
+
+ MappedClassInfo plainValueArrayMappedClassInfo = getBestPlainValueArrayMappedClassInfo(objects);
+ if(null != plainValueArrayMappedClassInfo)
+ {
+ mappedClassInfos = (ArrayList<MappedClassInfo>) mappedClassInfos.clone();
+ mappedClassInfos.add(plainValueArrayMappedClassInfo);
+ }
+
_resultsController = new ResultsController(_tab.pnlResults, hqlQuery, mappedClassInfos, session);
- RootType qrmr = new RootType(objects, con.getMappedClassInfos());
+ RootType qrmr = new RootType(objects, mappedClassInfos);
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode(qrmr);
_tab.treeTypes.setModel(new DefaultTreeModel(rootNode));
@@ -106,6 +115,19 @@
//CommandLineOutput.displayObjects(mappedClassInfos, qrmr, con.getPersistenCollectionClass());
}
+ private MappedClassInfo getBestPlainValueArrayMappedClassInfo(List<ObjectSubstituteRoot> objects)
+ {
+ // Can be improved: If first array element contains nulls the type of these values will be unknown
+ // though it might be available in other array elements.
+ MappedClassInfoData plainValueArrayMappedClassInfo = objects.get(0).getPlainValueArrayMappedClassInfo();
+
+ if(null == plainValueArrayMappedClassInfo)
+ {
+ return null;
+ }
+ return new MappedClassInfo(plainValueArrayMappedClassInfo);
+ }
+
private void onCopySqlToClip(HibernateConnection con, String hqlQuery, ISession session)
{
ArrayList<String> sqls = con.generateSQL(hqlQuery);
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/QueryListCreator.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/QueryListCreator.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/QueryListCreator.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -87,7 +87,14 @@
if (null == _hqlQueryResult.getQueryResultList())
{
- s_log.error(new NullPointerException("HqlQueryResult didn't contain a resultlist although it should according to its error state."));
+ if (null != _hqlQueryResult.getUpdateCount())
+ {
+ _session.getApplication().getMessageHandler().showMessage(s_stringMgr.getString("ObjectResultController.hqlDataUpdateSuccess", _hqlQueryResult.getUpdateCount(), _duration));
+ }
+ else
+ {
+ s_log.error(new NullPointerException("HqlQueryResult didn't contain a resultlist although it should according to its error state."));
+ }
}
else
{
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ResultDataSet.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -84,7 +84,7 @@
}
- if (null != mappedClassInfo)
+ if (null != mappedClassInfo && false == mappedClassInfo.isPlainValueArray())
{
return new SingleResult((ObjectSubstitute)hpr.getValue(), mappedClassInfo);
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/RootType.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/RootType.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/RootType.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -23,15 +23,7 @@
{
if(object.isArray())
{
- ArrayList<String> mappedClassNames = new ArrayList<String>();
- for(int i=0; i < object.getArraySize(); ++i)
- {
- ObjectSubstitute buf = object.getArrayItemAt(i);
- String mappedClassName = buf.getClassName();
- mappedClassNames.add(mappedClassName);
- }
-
- return createResultTupelType(mappedClassNames, allMappedClassInfos, objects);
+ return createResultTupleType(object, allMappedClassInfos, objects);
}
else
{
@@ -41,26 +33,28 @@
}
}
- private SingleType createSingleTypeResultType(String mappedClassName, ArrayList<MappedClassInfo> allMappedClassInfos, List<ObjectSubstituteRoot> objects)
+ private IType createResultTupleType(ObjectSubstituteRoot object, ArrayList<MappedClassInfo> allMappedClassInfos, List<ObjectSubstituteRoot> objects)
{
- MappedClassInfo mappedClassInfo = ViewObjectsUtil.findMappedClassInfo(mappedClassName, allMappedClassInfos, false);
-
- return new SingleType(mappedClassInfo, allMappedClassInfos, ObjectSubstituteRoot.toObjectSubstitutes(objects));
- }
-
- private TupelType createResultTupelType(ArrayList<String> mappedClassNames, ArrayList<MappedClassInfo> allMappedClassInfos, List<ObjectSubstituteRoot> objects)
- {
-
ArrayList<MappedClassInfo> mappedClassInfos = new ArrayList<MappedClassInfo>();
- for (String mappedClassName : mappedClassNames)
+
+ for(int i=0; i < object.getArraySize(); ++i)
{
+ ObjectSubstitute buf = object.getArrayItemAt(i);
+ String mappedClassName = buf.getClassName();
mappedClassInfos.add(ViewObjectsUtil.findMappedClassInfo(mappedClassName, allMappedClassInfos, false));
}
return new TupelType(mappedClassInfos, allMappedClassInfos, objects);
}
+ private SingleType createSingleTypeResultType(String mappedClassName, ArrayList<MappedClassInfo> allMappedClassInfos, List<ObjectSubstituteRoot> objects)
+ {
+ MappedClassInfo mappedClassInfo = ViewObjectsUtil.findMappedClassInfo(mappedClassName, allMappedClassInfos, false);
+ return new SingleType(mappedClassInfo, allMappedClassInfos, ObjectSubstituteRoot.toObjectSubstitutes(objects));
+ }
+
+
public IType getResultType()
{
return _type;
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/SingleType.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -99,7 +99,10 @@
mci = ViewObjectsUtil.findMappedClassInfo(hpr.getTypeName(), _allMappedClassInfos, false);
}
- objects.add((ObjectSubstitute) hpr.getValue());
+ if (null != mci && false == mci.isPlainValueArray())
+ {
+ objects.add((ObjectSubstitute) hpr.getValue());
+ }
}
}
Modified: trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ViewObjectsUtil.java
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ViewObjectsUtil.java 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/java/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/ViewObjectsUtil.java 2012-03-06 21:57:56 UTC (rev 6598)
@@ -44,7 +44,7 @@
{
parent.add(new DefaultMutableTreeNode(new PersistentCollectionResult(hpr, propertyInfo, allMappedClassInfos)));
}
- else if (null != findMappedClassInfo(hpr.getTypeName(), allMappedClassInfos, true))
+ else if (isMappedType(allMappedClassInfos, hpr))
{
SingleResult buf = new SingleResult(propertyName, (ObjectSubstitute) hpr.getValue(), findMappedClassInfo(hpr.getTypeName(), allMappedClassInfos, false));
parent.add(new DefaultMutableTreeNode(buf));
@@ -56,6 +56,12 @@
}
}
+ private static boolean isMappedType(ArrayList<MappedClassInfo> allMappedClassInfos, HibernatePropertyReader hpr)
+ {
+ MappedClassInfo mappedClassInfo = findMappedClassInfo(hpr.getTypeName(), allMappedClassInfos, true);
+ return null != mappedClassInfo && false == mappedClassInfo.isPlainValueArray();
+ }
+
static void nodeStructurChanged(DefaultMutableTreeNode node, JTree tree)
{
((DefaultTreeModel) tree.getModel()).nodeStructureChanged(node);
Modified: trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/I18NStrings.properties
===================================================================
--- trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/I18NStrings.properties 2012-03-04 11:44:35 UTC (rev 6597)
+++ trunk/sql12/plugins/hibernate/src/main/resources/net/sourceforge/squirrel_sql/plugins/hibernate/viewobjects/I18NStrings.properties 2012-03-06 21:57:56 UTC (rev 6598)
@@ -2,6 +2,7 @@
ObjectResultTabController.queryInfoLimited=LIMITED count:{0}; {1}
ObjectResultController.hqlReadObjectsSuccess=Read {0} objects in {1} milliseconds
+ObjectResultController.hqlDataUpdateSuccess=Updated {0} objects in {1} milliseconds
QueryResultNode.objectTree=Object tree
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|