mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-15 22:13:08 +00:00
[DS-1333] Versioning an Item causes some metadata values to be lost
This commit is contained in:
@@ -13,6 +13,7 @@ import org.dspace.core.Context;
|
|||||||
import org.dspace.storage.bitstore.BitstreamStorageManager;
|
import org.dspace.storage.bitstore.BitstreamStorageManager;
|
||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -23,22 +24,20 @@ import java.sql.SQLException;
|
|||||||
*/
|
*/
|
||||||
public abstract class AbstractVersionProvider {
|
public abstract class AbstractVersionProvider {
|
||||||
|
|
||||||
|
private Set<String> ignoredMetadataFields;
|
||||||
|
|
||||||
protected void copyMetadata(Item itemNew, Item nativeItem){
|
protected void copyMetadata(Item itemNew, Item nativeItem){
|
||||||
DCValue[] md = nativeItem.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
DCValue[] md = nativeItem.getMetadata(Item.ANY, Item.ANY, Item.ANY, Item.ANY);
|
||||||
for (DCValue aMd : md) {
|
for (DCValue aMd : md) {
|
||||||
if ((aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("relation") && (aMd.qualifier != null && aMd.qualifier.equals("haspart")))
|
String unqualifiedMetadataField = aMd.schema + "." + aMd.element;
|
||||||
|| (aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("relation") && (aMd.qualifier != null && aMd.qualifier.equals("ispartof")))
|
String qualifiedMetadataField = unqualifiedMetadataField + (aMd.qualifier == null ? "" : "." + aMd.qualifier);
|
||||||
|| (aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("identifier"))
|
if(getIgnoredMetadataFields().contains(qualifiedMetadataField) ||
|
||||||
|| (aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("relation") && (aMd.qualifier != null && aMd.qualifier.equals("isversionof")))
|
getIgnoredMetadataFields().contains(unqualifiedMetadataField + "." + Item.ANY))
|
||||||
|| (aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("date") && (aMd.qualifier != null && aMd.qualifier.equals("accessioned")))
|
|
||||||
|| (aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("date") && (aMd.qualifier != null && aMd.qualifier.equals("available")))
|
|
||||||
|| (aMd.schema.equals(MetadataSchema.DC_SCHEMA) && aMd.element.equals("description") && (aMd.qualifier != null && aMd.qualifier.equals("provenance"))))
|
|
||||||
{
|
{
|
||||||
|
//Skip this metadata field
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
itemNew.addMetadata(aMd.schema, aMd.element, aMd.qualifier, aMd.language, aMd.value);
|
itemNew.addMetadata(aMd.schema, aMd.element, aMd.qualifier, aMd.language, aMd.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -67,4 +66,12 @@ public abstract class AbstractVersionProvider {
|
|||||||
int idNew = BitstreamStorageManager.clone(context, nativeBitstream.getID());
|
int idNew = BitstreamStorageManager.clone(context, nativeBitstream.getID());
|
||||||
return Bitstream.find(context, idNew);
|
return Bitstream.find(context, idNew);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setIgnoredMetadataFields(Set<String> ignoredMetadataFields) {
|
||||||
|
this.ignoredMetadataFields = ignoredMetadataFields;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set getIgnoredMetadataFields() {
|
||||||
|
return ignoredMetadataFields;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -38,28 +38,4 @@
|
|||||||
<bean class="org.dspace.versioning.VersionHistoryDAO"/>
|
<bean class="org.dspace.versioning.VersionHistoryDAO"/>
|
||||||
</property>
|
</property>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
||||||
<!-- !!!!!!!!!!!!!!!!!!!!! ITEM LEVEL VERSIONING SERVICES !!!!!!!!!!!!!!!!!!!!! -->
|
|
||||||
|
|
||||||
<!-- Versioning Service Application Interface for DSpace Will be autowired with
|
|
||||||
a Versioning Provider present in Spring context.-->
|
|
||||||
<bean id="org.dspace.versioning.VersioningService"
|
|
||||||
class="org.dspace.versioning.VersioningServiceImpl"
|
|
||||||
autowire="byType"
|
|
||||||
scope="singleton">
|
|
||||||
<property name="versionDAO">
|
|
||||||
<bean class="org.dspace.versioning.VersionDAO"/>
|
|
||||||
</property>
|
|
||||||
<property name="versionHistoryDAO">
|
|
||||||
<bean class="org.dspace.versioning.VersionHistoryDAO"/>
|
|
||||||
</property>
|
|
||||||
<property name="provider">
|
|
||||||
<!-- Default Item Versioning Provider, defines behavior for replicating
|
|
||||||
Item, Metadata, BUndles and Bitstreams. Autowired at this time. -->
|
|
||||||
<bean class="org.dspace.versioning.DefaultItemVersionProvider"/>
|
|
||||||
</property>
|
|
||||||
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
@@ -17,8 +17,8 @@
|
|||||||
<!-- Versioning Service Application Interface for DSpace Will be autowired with
|
<!-- Versioning Service Application Interface for DSpace Will be autowired with
|
||||||
a Versioning Provider present in Spring context.
|
a Versioning Provider present in Spring context.
|
||||||
Default Item Versioning Provider, defines behavior for replicating
|
Default Item Versioning Provider, defines behavior for replicating
|
||||||
Item, Metadata, BUndles and Bitstreams. Autowired at this time.
|
Item, Metadata, Bundles and Bitstreams. Autowired at this time.
|
||||||
|
-->
|
||||||
<bean id="org.dspace.versioning.VersioningService"
|
<bean id="org.dspace.versioning.VersioningService"
|
||||||
class="org.dspace.versioning.VersioningServiceImpl"
|
class="org.dspace.versioning.VersioningServiceImpl"
|
||||||
autowire="byType"
|
autowire="byType"
|
||||||
@@ -30,10 +30,19 @@
|
|||||||
<bean class="org.dspace.versioning.VersionHistoryDAO"/>
|
<bean class="org.dspace.versioning.VersionHistoryDAO"/>
|
||||||
</property>
|
</property>
|
||||||
<property name="provider">
|
<property name="provider">
|
||||||
|
<!-- Default Item Versioning Provider, defines behavior for replicating
|
||||||
<bean class="org.dspace.versioning.DefaultItemVersionProvider"/>
|
Item, Metadata, Budles and Bitstreams. Autowired at this time. -->
|
||||||
|
<bean class="org.dspace.versioning.DefaultItemVersionProvider">
|
||||||
|
<property name="ignoredMetadataFields">
|
||||||
|
<set>
|
||||||
|
<value>dc.date.accessioned</value>
|
||||||
|
<value>dc.description.provenance</value>
|
||||||
|
</set>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
</bean>
|
</bean>
|
||||||
-->
|
</property>
|
||||||
|
|
||||||
|
</bean>
|
||||||
|
|
||||||
</beans>
|
</beans>
|
||||||
|
Reference in New Issue
Block a user