You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jaxme-dev@ws.apache.org by jo...@apache.org on 2004/03/23 18:50:50 UTC

cvs commit: ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern VersionGenerator.java

jochen      2004/03/23 09:50:50

  Modified:    src/js/org/apache/ws/jaxme/js/pattern VersionGenerator.java
  Log:
  Nullable keys have not been handled properly.
  
  Revision  Changes    Path
  1.5       +30 -6     ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/VersionGenerator.java
  
  Index: VersionGenerator.java
  ===================================================================
  RCS file: /home/cvs/ws-jaxme/src/js/org/apache/ws/jaxme/js/pattern/VersionGenerator.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- VersionGenerator.java	16 Feb 2004 23:39:54 -0000	1.4
  +++ VersionGenerator.java	23 Mar 2004 17:50:49 -0000	1.5
  @@ -147,9 +147,32 @@
   		public void update(JavaMethod pMethod, TableInfo pTableInfo,
   						   DirectAccessible pConnection,
   						   DirectAccessible pMap, DirectAccessible pRow) {
  +			Table table = foreignKey.getTable();
  +			List params = new ArrayList();
  +			for (Iterator iter = foreignKey.getColumns();  iter.hasNext();  ) {
  +				Column primaryKeyColumn = (Column) iter.next();
  +				int index = -1;
  +				int i = 0;
  +				for (Iterator iter2 = table.getColumns();  iter2.hasNext();  ++i) {
  +					Column tableColumn = (Column) iter2.next();
  +					if (tableColumn.equals(primaryKeyColumn)) {
  +						index = i;
  +						break; 
  +					}
  +				}
  +				if (index == -1) {
  +					throw new IllegalStateException("Key column " + primaryKeyColumn.getQName() + " not found.");
  +				}
  +				if (params.size() > 0) {
  +					params.add("  ||  ");
  +				}
  +				params.add(new Object[]{pRow, "[" + index + "] != null"});
  +			}
  +
  +			pMethod.addIf(params);
   			LocalJavaField referencedKey = getCacheDataClassInstance(pMethod,
  -					referencedTable,
  -					foreignKey, pRow);
  +																	 referencedTable,
  +																	 foreignKey, pRow);
   			LocalJavaField mappedKey = pMethod.newJavaField(referencedKey.getType());
   			mappedKey.addLine("(", referencedKey.getType(), ") ", pMap, ".get(",
   					referencedKey, ")");
  @@ -187,6 +210,8 @@
   				}
   				pMethod.addLine(pRow, "[" + colNum + "] = ", mappedKey, ".getValues()[" + valNum++ + "];");
   			}
  +
  +			pMethod.addEndIf();
   		}
   	}
   	
  @@ -766,12 +791,11 @@
   		JavaQName cacheDataClass = getCacheDataClassName(pMethod.getJavaSource().getQName());
   		LocalJavaField jf = pMethod.newJavaField(cacheDataClass);
   		jf.addLine("new ", cacheDataClass, "(",
  -				
  -				JavaSource.getQuoted(pTableInfo.getPropertyName()),
  -				", new ", Object[].class, "{", params, "})");
  +				   JavaSource.getQuoted(pTableInfo.getPropertyName()),
  +				   ", new ", Object[].class, "{", params, "})");
   		return jf;
   	}
  -	
  +
   	/** <p>Updates a row by reading the values from an instance of the inner
   	 * class CacheData.</p>
   	 */
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jaxme-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: jaxme-dev-help@ws.apache.org