public List<String> getShortFieldValueList() { List<String> result = new ArrayList<String>(); result.add(pid); result.add(lowerCase(label)); result.add(lowerCase(state)); result.add(lowerCase(ownerId)); result.add(dateStamp(createDate)); result.add(dateStamp(lastModDate)); result.add(dateStamp(dcModifiedDate)); return result; }
@Test public void dcDatesLongFields() throws ServerException, SQLException { updateRecord(OBJECT_WITH_DC_AND_DATES, true); verify(mockConnection,times(1)).prepareStatement("DELETE FROM dcDates WHERE pid=?"); verify(mockConnection, times(1)).prepareStatement("INSERT INTO dcDates (pid, dcDate) values (?, ?)"); verifyStatic(times(1)); SQLUtility.replaceInto( any(Connection.class), eq("doFields"), aryEq(LONG_FIELDS), aryEq(OBJECT_WITH_DC_AND_DATES.getLongFieldValueList().toArray(new String[]{})), eq("pid"), any(boolean[].class)); }
private void updateRecord(ObjectData objectData, boolean longFields) throws ServerException { // Create a DC datastream if appropriate. DatastreamXMLMetadata dcmd = null; if (objectData.getDcPayload() != null) { dcmd = new DatastreamXMLMetadata(); dcmd.DatastreamID = "DC"; dcmd.DSCreateDT = objectData.getDcModifiedDate(); dcmd.xmlContent = objectData.getDcPayload().getBytes(); } // Create the object and populate it. BasicDigitalObject theObject = new BasicDigitalObject(); theObject.setPid(objectData.getPid()); theObject.setLabel(objectData.getLabel()); theObject.setState(objectData.getState()); theObject.setOwnerId(objectData.getOwnerId()); theObject.setCreateDate(objectData.getCreateDate()); theObject.setLastModDate(objectData.getLastModDate()); if (dcmd != null) { theObject.addDatastreamVersion(dcmd, false); } // Create the test instance. FieldSearchSQLImpl fssi = new FieldSearchSQLImpl(this.connectionPool, this.mockRepositoryReader, 50, 50, longFields); // And do the update. fssi.update(new MockDOReader(theObject)); }
public List<String> getLongFieldValueList() { List<String> result = new ArrayList<String>(); result.addAll(getShortFieldValueList()); result.add(lowerCase(getDcFields("dc:title"))); result.add(lowerCase(getDcFields("dc:creator"))); result.add(lowerCase(getDcFields("dc:subject"))); result.add(lowerCase(getDcFields("dc:description"))); result.add(lowerCase(getDcFields("dc:publisher"))); result.add(lowerCase(getDcFields("dc:contributor"))); result.add(lowerCase(getDcFields("dc:date"))); result.add(lowerCase(getDcFields("dc:type"))); result.add(lowerCase(getDcFields("dc:format"))); result.add(lowerCase(getDcFields("dc:identifier"))); result.add(lowerCase(getDcFields("dc:source"))); result.add(lowerCase(getDcFields("dc:language"))); result.add(lowerCase(getDcFields("dc:relation"))); result.add(lowerCase(getDcFields("dc:coverage"))); result.add(lowerCase(getDcFields("dc:rights"))); return result; }
@Test public void dcNoDatesLongFields() throws ServerException, SQLException { updateRecord(OBJECT_WITH_DC, true); verify(mockConnection,times(1)).prepareStatement("DELETE FROM dcDates WHERE pid=?"); verify(mockConnection, times(0)).prepareStatement("INSERT INTO dcDates (pid, dcDate) values (?, ?)"); verifyStatic(times(1)); SQLUtility.replaceInto( any(Connection.class), eq("doFields"), aryEq(LONG_FIELDS), aryEq(OBJECT_WITH_DC.getLongFieldValueList().toArray(new String[]{})), eq("pid"), any(boolean[].class)); }