private SqlStatement GetUpdateStatement(Entity entity) throws Exception { StringBuffer builder = new StringBuffer(); SqlStatement sql = new SqlStatement(); // et... EntityType et = getEntityType(); // update... builder.append("UPDATE "); builder.append(et.getNativeName()); builder.append(" SET "); // walk... boolean first = true; EntityField key = null; for (int index = 0; index < et.getFields().size(); index++) { EntityField field = (EntityField) et.getFields().elementAt(index); if (field.getIsKey()) key = field; else if (entity.getIsModified(field)) { if (first) first = false; else builder.append(", "); // add the snippet... builder.append(field.getNativeName()); builder.append("=?"); // add the parameter... Object value = entity.GetValue(field); sql.AddParameterValue(value); } } // append... AppendIdConstraint(builder, sql, key, entity); // return... sql.setCommandText(builder.toString()); return sql; }
private SqlStatement GetInsertStatement(Entity entity) throws Exception { StringBuffer builder = new StringBuffer(); SqlStatement sql = new SqlStatement(); // et... EntityType et = getEntityType(); // create... builder.append("INSERT INTO "); builder.append(et.getNativeName()); builder.append(" ("); boolean first = true; for (int index = 0; index < et.getFields().size(); index++) { EntityField field = (EntityField) et.getFields().elementAt(index); if (entity.getIsModified(field)) { if (first) first = false; else builder.append(", "); builder.append(field.getNativeName()); } } builder.append(") VALUES ("); first = true; for (int index = 0; index < et.getFields().size(); index++) { EntityField field = (EntityField) et.getFields().elementAt(index); if (entity.getIsModified(field)) { if (first) first = false; else builder.append(", "); builder.append("?"); // add in the parameter.... sql.AddParameterValue(entity.GetValue(field)); } } builder.append(")"); // return... sql.setCommandText(builder.toString()); return sql; }
private void PushChanges() throws Exception { BookmarkCollection updates = Bookmark.GetBookmarksForServerUpdate(getContextSource()); BookmarkCollection deletes = Bookmark.GetBookmarksForServerDelete(this.getContextSource()); if (updates.size() == 0 && deletes.size() == 0) return; // et... EntityType et = EntityType.GetEntityType(Bookmark.class); // get the server ones... BookmarksService service = new BookmarksService(); BookmarkCollection fromServer = service.GetAll(); // walk the locally updated items… for (Bookmark local : updates) { // find it in our server set... Bookmark toUpdate = null; for (Bookmark server : fromServer) { if (local.getOrdinal() == server.getOrdinal()) { toUpdate = server; break; } } // did we have one to change? if (toUpdate != null) { // walk the fields... int serverId = 0; for (EntityField field : et.getFields()) { if (!(field.getIsKey())) toUpdate.SetValue(field, local.GetValue(field), SetReason.UserSet); else serverId = toUpdate.getBookmarkId(); } // send that up... service.PushUpdate(this.getContextSource(), toUpdate, serverId); } else { // we need to insert it... service.PushInsert(this.getContextSource(), local); } } // what about ones to delete? for (Bookmark local : deletes) { // find a matching ordinal on the server... for (Bookmark server : fromServer) { if (local.getOrdinal() == server.getOrdinal()) service.PushDelete(this.getContextSource(), server, server.getBookmarkId()); } } }