public void saveOrUpdateCodeSet(CodeSet codeset) {
   if (codeset.getCodeSetId() == -1L) {
     long codeSetId = getNextId(sequencerName);
     codeset.setCodeSetId(codeSetId);
     getJdbcTemplate()
         .update(
             getBoundSql("COMPETENCY_ACCESSMENT.INSERT_CODESET").getSql(),
             new SqlParameterValue(Types.NUMERIC, codeset.getCodeSetId()),
             new SqlParameterValue(Types.NUMERIC, codeset.getObjectType()),
             new SqlParameterValue(Types.NUMERIC, codeset.getObjectId()),
             new SqlParameterValue(Types.NUMERIC, codeset.getParentCodeSetId()),
             new SqlParameterValue(Types.VARCHAR, codeset.getName()),
             new SqlParameterValue(Types.VARCHAR, codeset.getGroupCode()),
             new SqlParameterValue(Types.VARCHAR, codeset.getCode()),
             new SqlParameterValue(Types.VARCHAR, codeset.getDescription()),
             new SqlParameterValue(Types.TIMESTAMP, codeset.getCreationDate()),
             new SqlParameterValue(Types.TIMESTAMP, codeset.getModifiedDate()));
     if (codeset.getProperties().size() > 0) {
       setCodesetProperties(codeset.getCodeSetId(), codeset.getProperties());
     }
   } else {
     getJdbcTemplate()
         .update(
             getBoundSql("COMPETENCY_ACCESSMENT.UPDATE_CODESET").getSql(),
             new SqlParameterValue(Types.NUMERIC, codeset.getParentCodeSetId()),
             new SqlParameterValue(Types.VARCHAR, codeset.getName()),
             new SqlParameterValue(Types.VARCHAR, codeset.getGroupCode()),
             new SqlParameterValue(Types.VARCHAR, codeset.getCode()),
             new SqlParameterValue(Types.VARCHAR, codeset.getDescription()),
             new SqlParameterValue(Types.TIMESTAMP, codeset.getModifiedDate()),
             new SqlParameterValue(Types.NUMERIC, codeset.getCodeSetId()));
     deleteCodesetProperties(codeset.getCodeSetId());
     setCodesetProperties(codeset.getCodeSetId(), codeset.getProperties());
   }
 }
 public void saveOrUpdateCodeSet(List<CodeSet> codesets) {
   List<CodeSet> updates = new ArrayList<CodeSet>();
   List<CodeSet> inserts = new ArrayList<CodeSet>();
   for (CodeSet codeSet : codesets) {
     if (codeSet.getCodeSetId() < 1) {
       long codeSetId = getNextId(sequencerName);
       codeSet.setCodeSetId(codeSetId);
       inserts.add(codeSet);
     } else {
       updates.add(codeSet);
     }
   }
   batchUpdateCodeSet(updates);
   batchInsertCodeSet(inserts);
 }