Skip to content
Snippets Groups Projects
Commit ca2aec7d authored by Andreas Romeyke's avatar Andreas Romeyke
Browse files

- fixed path to plugin in Makefile

- fixed classpath in Makefile
- moved java-file to class-dirname structure
- added PLUGIN-INF/  with metadata
- adapted source of java file to import right classes
parent 1f1c050b
No related branches found
No related tags found
No related merge requests found
...@@ -7,19 +7,21 @@ ...@@ -7,19 +7,21 @@
JAVAPATH=$(wildcard /usr/lib/jvm/java-1.6.0-openjdk-*/bin/) JAVAPATH=$(wildcard /usr/lib/jvm/java-1.6.0-openjdk-*/bin/)
# Verwendete Rosetta-Version # Verwendete Rosetta-Version
ROSETTAVERSION=3.2.1 ROSETTAVERSION=3.2.0
# Pfad zum Rosetta-SDK # Pfad zum Rosetta-SDK
ROSETTASDK=/exlibris/dps/d4_1/system.dir/dps-sdk-${ROSETTAVERSION}/lib/ ROSETTASDK=/exlibris/dps/d4_1/system.dir/dps-sdk-${ROSETTAVERSION}/lib/
# Pfad zum Rosetta-SDK, Deposit-Module # Pfad zum Rosetta-SDK, Deposit-Module
ROSETTASDKDEPOSIT=${ROSETTASDK}/../dps-sdk-projects/dps-sdk-deposit/lib ROSETTASDKDEPOSIT=${ROSETTASDK}/../dps-sdk-projects/dps-sdk-deposit/lib
ROSETTASDKPLUGINS=${ROSETTASDK}/../../bundled_plugins/
# classpath # classpath
CLASSPATH=${ROSETTASDKDEPOSIT}/../src/:${ROSETTASDKDEPOSIT}/xmlbeans-2.3.0.jar:${ROSETTASDKDEPOSIT}/dps-sdk-${ROSETTAVERSION}.jar:${ROSETTASDKDEPOSIT}/log4j-1.2.14.jar CLASSPATH=${ROSETTASDKDEPOSIT}/../src/:${ROSETTASDKDEPOSIT}/xmlbeans-2.3.0.jar:${ROSETTASDKDEPOSIT}/dps-sdk-${ROSETTAVERSION}.jar:${ROSETTASDKDEPOSIT}/log4j-1.2.14.jar:${ROSETTASDKPLUGINS}/NFSStoragePlugin.jar
# sources # sources
SOURCES=java/SLUBStoragePlugin.java SOURCES=java/org/slub/rosetta/dps/repository/plugin/storage/nfs/SLUBStoragePlugin.java
OBJS=$(SOURCES:.java=.class) OBJS=$(SOURCES:.java=.class)
...@@ -42,6 +44,7 @@ jarclean: ...@@ -42,6 +44,7 @@ jarclean:
clean: jarclean clean: jarclean
@rm -Rf doc/ @rm -Rf doc/
@rm -f *.class *.jar *.sh @rm -f *.class *.jar *.sh
@rm -f $(OBJS)
distclean: clean distclean: clean
@rm -f *~ @rm -f *~
......
<pl:metadata-config xmlns:pl="http://www.exlibrisgroup.com/Plugins/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<pl:pluginTypeName>StoragePlugin</pl:pluginTypeName>
<pl:deployName>SLUBStoragePlugin</pl:deployName>
<pl:className>org.slub.rosetta.dps.repository.plugin.storage.nfs.SLUBStoragePlugin</pl:className>
<pl:initParameters>
<fr:x_form xmlns:fr="http://com/exlibris/digitool/common/forms/xmlbeans">
<form_name>SLUBStoragePlugin_Params</form_name>
<description>SLUBTreeStoragePlugin_parameters_form</description>
<version>0.1</version>
<grid_x>1</grid_x>
<md_format>1</md_format>
<x_fields>
<x_field>
<field_name>DIR_ROOT</field_name>
<label>ui.storage.nfs.rootDir</label>
<ui_tool_tip>ui.storage.nfs.rootDir.tooltip</ui_tool_tip>
<single>false</single>
<mandatory>true</mandatory>
<x_logic_type>String</x_logic_type>
<x_ui_type>TextField</x_ui_type>
<css_class>width40</css_class>
<x_options></x_options>
</x_field>
<x_field>
<field_name>MAX_SIZE_IN_MB</field_name>
<label>ui.storage.nfs.storageMaxCapacity</label>
<ui_tool_tip>ui.storage.nfs.storageMaxCapacity.tooltip</ui_tool_tip>
<single>false</single>
<mandatory>true</mandatory>
<validator_class_name>com.exlibris.core.infra.web.utils.formBuilder.validator.NumericFormValidator</validator_class_name>
<x_logic_type>String</x_logic_type>
<x_ui_type>TextField</x_ui_type>
<css_class>width40</css_class>
<x_options></x_options>
</x_field>
<x_field>
<field_name>BLOCK_SIZE</field_name>
<label>ui.storage.nfs.fileBlockSize</label>
<ui_tool_tip>ui.storage.nfs.fileBlockSize</ui_tool_tip>
<single>false</single>
<default_value>8</default_value>
<mandatory>true</mandatory>
<validator_class_name>com.exlibris.core.infra.web.utils.formBuilder.validator.NumericFormValidator</validator_class_name>
<x_logic_type>String</x_logic_type>
<x_ui_type>TextField</x_ui_type>
<css_class>width40</css_class>
<x_options></x_options>
</x_field>
<x_field>
<field_name>FILES_HANDLING_METHOD</field_name>
<label>ui.storage.nfs.filesHandlingMethod</label>
<ui_tool_tip>filesHandlingMethod.filesHandlingMethod</ui_tool_tip>
<single>false</single>
<default_value>copy</default_value>
<pos_x>1</pos_x>
<pos_y>3</pos_y>
<mandatory>true</mandatory>
<x_logic_type>String</x_logic_type>
<x_ui_type>Radio</x_ui_type>
<populator_class_name>com.exlibris.core.infra.web.utils.formBuilder.populators.CodeTablePopulator</populator_class_name>
<x_populator_parameters>
<x_populator_parameter>
<parameter>table</parameter>
<value>FILES_HANDLING_METHOD_CODE_TABLE_PLACE_HOLDER</value>
</x_populator_parameter>
</x_populator_parameters>
<x_options></x_options>
</x_field>
</x_fields>
</fr:x_form>
</pl:initParameters>
<pl:description>SLUB Storage Plugin</pl:description>
<pl:version>1.1</pl:version>
<pl:materialType>DIGITAL</pl:materialType>
<pl:module>Repository</pl:module>
<pl:generalType>TASK</pl:generalType>
<pl:publicApi>N</pl:publicApi>
<pl:implType>java</pl:implType>
<pl:contactPerson>
<contact_info xmlns="http://www.exlibrisgroup.com/Plugins/1.0/">
<contactType>admin</contactType>
<firstName></firstName>
<lastName>SLUB Dresden</lastName>
<telephone1></telephone1>
<telephone2></telephone2>
<email>rosetta@slb-dresden.de</email>
<address1>Zellescher Weg 17</address1>
<address2></address2>
<city>Dresden</city>
<zipCode>01069</zipCode>
<country>Germany</country>
</contact_info>
</pl:contactPerson>
</pl:metadata-config>
//package com.exlibris.dps.repository.plugin.storage.nfs;
package org.slub.rosetta.dps.repository.plugin.storage.nfs;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.exlibris.dps.repository.plugin.storage.nfs.NFSStoragePlugin;
import com.exlibris.core.infra.common.util.IOUtil;
import com.exlibris.core.sdk.storage.containers.StoredEntityMetaData;
import com.exlibris.digitool.common.storage.Fixity;
import com.exlibris.digitool.infrastructure.utils.Checksummer;
public class SLUBStoragePlugin extends NFSStoragePlugin {
private static final String DIR_ROOT = "DIR_ROOT";
public SLUBStoragePlugin() {
super();
}
@Override
public String storeEntity(InputStream is, StoredEntityMetaData storedEntityMetadata) throws Exception {
String fileName = createFileName(storedEntityMetadata);
String relativeDirectoryPath = getStreamRelativePath(storedEntityMetadata);
File destFile = getStreamDirectory(relativeDirectoryPath, fileName);
// better move/link
if (canHandleSourcePath(storedEntityMetadata.getCurrentFilePath())) {
is.close(); // close input stream so that 'move' can work, we don't use it anyway
copyStream(storedEntityMetadata.getCurrentFilePath(), destFile.getAbsolutePath());
}
// default way - copy from input stream
else {
IOUtil.copy(is, new FileOutputStream(destFile));
}
String storedEntityIdentifier = relativeDirectoryPath + File.separator + fileName;
if(!checkFixity(storedEntityMetadata.getFixities(), storedEntityIdentifier)) {
deleteEntity(storedEntityIdentifier); // delete corrupt files
return null;
}
// return only relative (not absolute) path
return storedEntityIdentifier;
}
private String getStreamRelativePath(StoredEntityMetaData storedEntityMetaData ) throws Exception {
String relativeDirectoryPath = File.separator;
String pid = storedEntityMetaData.getEntityPid();
Checksummer checksummer = new Checksummer(pid, true, false, false);
Fixity fixity = new Fixity(Fixity.FixityAlgorithm.MD5.toString(), checksummer.getMD5());
String value = fixity.getValue();
for(int i=0 ; i<value.length() && i<32 ; i= i+2) {
if(i+1 < value.length()) {
relativeDirectoryPath += value.substring(i, i+2) + File.separator;
} else {
relativeDirectoryPath += value.substring(i, i+1) + File.separator;
}
}
if(32 < value.length()) {
relativeDirectoryPath += value.substring(32);
}
return relativeDirectoryPath;
}
private File getStreamDirectory(String path, String fileName) {
File newDir = new File(parameters.get(DIR_ROOT) + File.separator + path);
newDir.mkdirs();
return new File(newDir.getAbsolutePath() + File.separator + fileName);
}
private boolean canHandleSourcePath(String srcPath) {
try {
File file = new File(srcPath);
return file.canRead();
}
catch (Exception e) {
return false;
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment