Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • digital-preservation/checkit_tiff_plugin4rosetta
1 result
Select Git revision
Show changes
Commits on Source (2)
#!/usr/bin/env perl
# adds all dnx properties
# by Andreas Romeyke (andreas.romeyke@slub-dresden.de)
# by Andreas Romeyke (andreas.romeyke@slub-dresden.de) and Serhiy Bolkun (serhiy.bolkun@slub-dresden.de)
#
# usage: perl add_dnx_mappings.pl host user password institution port
# example: perl add_dnx_mappings.pl sdvdev.slub-dresden.de mustermann 12345 slub 8080
#
# needs a geckodriver and the Selenium::Remote::Driver module
# see http://www.seleniumhq.org/
#
# tested against Rosetta 5.2 using chromedriver and chromium 60.0.3112.78
# under Debian Stretch
# tested against Rosetta 7.0 using chromedriver and chromium 90.0.4430.93
# under Windows 10 and Debian 10
#
# ensure, that the plugin is assigned to a classification, for example to
# "Image (Mix)"
......@@ -16,18 +19,24 @@ use warnings;
use utf8;
use Selenium::Remote::Driver;
use Selenium::Chrome;
use Term::ANSIColor; # colored print
use Data::Printer;
use v5.10;
my $host=shift;
my $user=shift;
my $passwd=shift;
my $institution=shift;
#my $ui_port=":1801";
#my $ui_port=":80"; # Produktion
my $ui_port=shift;
BEGIN {
if ($^O eq 'MSWin32') {
require Win32::Console::ANSI;
Win32::Console::ANSI->import();
}
}
my $host = shift;
my $user = shift;
my $passwd = shift;
my $institution = shift;
my $ui_port = shift; # 1801, 80 for Produktion
my $protocol = 'https';
my %exiftool2dnx = (
"ICC-header:ColorSpaceData" => "icc.colorspacedata",
"ICC-header:DeviceModel" => "icc.devicemodel",
......@@ -63,98 +72,72 @@ my %exiftool2dnx = (
"IFD0:XResolution" => "image.xresolution", # TIFF-Tag 282 XResolution ( Angabe in dpi)
"IFD0:YResolution" => "image.yresolution", # TIFF-Tag 283 YResolution ( Angabe in dpi)
);
my $plugin_name="SLUBTechnicalMetadataExtractorCheckItTiffPlugin";
my $classification_group="Image (Mix)";
my $plugin_name = "SLUBTechnicalMetadataExtractorCheckItTiffPlugin";
my $classification_group = "Image (Mix)";
my $driver = Selenium::Chrome->new();
$driver->debug_on;
$driver->set_implicit_wait_timeout(1000);
$driver->set_timeout('script', 1000);
print "Try to mechanize adding DNX, using:
host=$host
user=$user
institution=$institution
";
my $driver = Selenium::Chrome->new();
$driver->debug_on;
$driver->set_implicit_wait_timeout(1000);
$driver->set_timeout('script', 1000);
\n";
sub login {
print "login:\n";
#$driver->get("http://$host:8991/pds?func=load-login&lang=en&langOptions=en.English&institution=&institute=INS_SLUB&calling_system=dps");
$driver->get("http://$host:1801/mng?auth=local");
#$driver->get("https://$host:8443/mng?auth=local");
#my $ele_institute = $driver->find_element("institute", "id");
my $ele_institute = $driver->find_element("selectInstitution", "id");
p( $ele_institute);
print "inst select found\n";
$driver->find_child_element(
$ele_institute,
"./option[\@value='$institution']", "xpath"
)->click;
$driver->get("$protocol://$host:${ui_port}/mng?auth=local");
my $ele_institute = $driver->find_element("institution", "id");
$driver->find_child_element($ele_institute, "./option[\@value='$institution']", "xpath")->click;
$driver->find_element("userName", "id")->clear;
$driver->find_element("userName", "id")->send_keys("$user");
$driver->find_element("userName", "id")->send_keys($user);
$driver->find_element("password", "id")->clear;
$driver->find_element("password", "id")->send_keys("$passwd");
$driver->find_element("Login", "name")->click;
$driver->find_element("password", "id")->send_keys($passwd);
$driver->find_element("login", "id")->click;
}
sub logout {
print "logout:\n";
$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->get("https://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
$driver->get("$protocol://$host:${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
my $ele = $driver->find_element("user", "id")->click;
$driver->pause();
$ele = $driver->find_element("Logout", "link")->click;
}
sub _change_to_xxx_format_library {
$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->get("https://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->find_element("Quick Launch", "link")->click;
# $driver->find_element("Administer the system", "link")->click;
$driver->get("$protocol://$host:${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
$driver->find_element("//a[\@title='Administer the system']", "xpath")->click;
#~ $driver->find_element("General", "link")->click; # Fix for Rosetta 5.5+
$driver->find_element("General Parameters", "link")->click;
$driver->find_element("undefined_button", "id")->click;
$driver->find_element("modules_button", "id")->click;
$driver->find_element("//li[\@title='format_library']", "xpath")->click;
## find 'tr[/td=format_library_is_global]', dann undefined button clicken,
my $tr = $driver->find_element("//tr[starts-with(td,'format_library_is_global')]", "xpath");
p( $tr );
my $td = $driver->find_child_element($tr, "./td[\@class='form-inline']", "xpath");
p ($td);
$driver->find_child_element( $td, "descendant::button[\@id='undefined_button']", "xpath")->click;
$driver->find_element("generalParameters_model_parameters_2__value_button", "id")->click;
say "click combobox button";
return $td;
}
sub change_to_global_format_library {
my $td=_change_to_xxx_format_library();
$driver->find_child_element( $td, "descendant::li[text()='true']", "xpath")->click;
my $td = _change_to_xxx_format_library();
$driver->find_child_element($td, "descendant::li[text()='true']", "xpath")->click;
say "select true";
$driver->find_element("//button[\@value='Update']", "xpath")->click;
say "click update button";
}
sub change_to_local_format_library {
my $td = _change_to_xxx_format_library();
$driver->find_child_element( $td, "descendant::li[text()='false']", "xpath")->click;
$driver->find_child_element($td, "descendant::li[text()='false']", "xpath")->click;
say "select false";
$driver->find_element("//button[\@value='Update']", "xpath")->click;
say "click update button";
$driver->pause();
}
sub add_dnx_property ($$) {
sub add_dnx_property($$) {
my $dnx_property = shift;
my $dnx_description = shift;
my $dow = localtime;
#$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->find_element("Preservation", "link")->click;
#$driver->find_element("(//a[contains(text(),'Significant Properties')])[2]", "xpath")->click;
$driver->get("http://$host${ui_port}/mng/action/pageAction.page_xml.page_sig_prop_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&backUrl=");
#$driver->get("https://$host${ui_port}/mng/action/pageAction.page_xml.page_sig_prop_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&backUrl=");
$driver->get("$protocol://$host:${ui_port}/mng/action/pageAction.page_xml.page_sig_prop_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&backUrl=");
$driver->pause();
$driver->find_element("Add Significant Property", "link")->click;
$driver->find_element("selectedSigPropname", "id")->clear;
......@@ -164,35 +147,29 @@ sub add_dnx_property ($$) {
$driver->find_element("SaveSigPropGenDetails", "name")->click;
}
sub join_dnx_property_to_classification_group ($) {
sub join_dnx_property_to_classification_group($) {
my $dnx_property = shift;
say "try to join dnx property";
$driver->get("http://$host${ui_port}/mng/action/pageAction.page_xml.page_classification_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&backUrl=");
#$driver->get("https://$host${ui_port}/mng/action/pageAction.page_xml.page_classification_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&backUrl=");
$driver->get("$protocol://$host:${ui_port}/mng/action/pageAction.page_xml.page_classification_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&backUrl=");
$driver->pause();
$driver->find_element("find0.0", "id")->clear;
$driver->find_element("find0.0", "id")->send_keys($classification_group);
$driver->find_element("go", "name")->click;
$driver->find_element("Edit", "link")->click;
$driver->find_element("Related Properties", "link")->click;
my $ele = $driver->find_element("//form[\@id='classificationDetailsForm']//div[\@class='available']", "xpath");
$driver->find_child_element($ele, "(//input[\@type='text'])", "xpath")->clear;
$driver->find_child_element($ele, "(//input[\@type='text'])[3]", "xpath")->send_keys($dnx_property);
#$driver->find_element("//form[\@id='classificationDetailsForm']/div/div[4]/div/div/div[2]/ul/li[230]/a/span", "xpath")->click;
#my $ele = $driver->find_element("li[\@title='$dnx_property']", "xpath");
#$driver->find_child_element( $ele, "a", "link")->click;
$driver->find_element("//form[\@id='classificationDetails']//div[\@class='available']//div//input", "xpath")->clear;
$driver->find_element("//form[\@id='classificationDetails']//div[\@class='available']//div//input", "xpath")->send_keys($dnx_property);
$driver->pause();
$driver->find_element("Add all", "link")->click;
$driver->find_element("SaveClassificationGenDetails", "name")->click;
$driver->pause();
}
sub extractors_add_mapping ($$) {
sub extractors_add_mapping($$) {
my $dnx_property = shift;
my $exiftool_property = shift;
say "try to add extractor mapping";
$driver->get("http://$host${ui_port}//mng/action/pageAction.page_xml.page_extractors_list.xml.do?pageBean.deploymentMode=BUNDLED&pageViewMode=Edit&pageBean.currentUserMode=LOCAL&RenewBean=true&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&backUrl=");
#$driver->get("https://$host${ui_port}//mng/action/pageAction.page_xml.page_extractors_list.xml.do?pageBean.deploymentMode=BUNDLED&pageViewMode=Edit&pageBean.currentUserMode=LOCAL&RenewBean=true&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&backUrl=");
$driver->get("$protocol://$host:${ui_port}//mng/action/pageAction.page_xml.page_extractors_list.xml.do?pageBean.deploymentMode=BUNDLED&pageViewMode=Edit&pageBean.currentUserMode=LOCAL&RenewBean=true&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&backUrl=");
$driver->pause();
$driver->find_element("Custom", "link")->click;
$driver->find_element("find1.0", "id")->clear;
......@@ -200,14 +177,13 @@ sub extractors_add_mapping ($$) {
$driver->find_element("go", "name")->click;
$driver->find_element("Edit", "link")->click;
$driver->find_element("Add Mapping", "link")->click;
$driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->click;
$driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->clear;
$driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->send_keys($exiftool_property);
$driver->find_element("pageBeancurrentMappingextractorProperty_button", "id")->click;
$driver->pause();
$driver->find_element("//li[\@title='$exiftool_property']", "xpath")->click;
$driver->pause();
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->click;
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->clear;
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->send_keys("$dnx_property");
$driver->find_element("pageBeancurrentMappingclassificationProperty_button", "id")->click;
$driver->pause();
$driver->find_element("//li[\@title='$dnx_property']", "xpath")->click;
$driver->pause();
......@@ -219,35 +195,44 @@ sub extractors_add_mapping ($$) {
$driver->pause();
}
# login
printf colored("Step 1 of 7: login \n", 'bold green');
login();
# change to global format library
printf colored("Step 2 of 7: change to global format library \n", 'bold green');
change_to_global_format_library();
# add dnx property
printf colored("Step 3 of 7: add dnx property \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $exiftool_property };
add_dnx_property($dnx_property, "$dnx_property <- Exiftool '$exiftool_property'");
}
# include dnx property to classification group (Image(MIX))
printf colored("Step 4 of 7: join dnx property to classification group \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $exiftool_property };
join_dnx_property_to_classification_group( $dnx_property);
join_dnx_property_to_classification_group($dnx_property);
}
# add mapping
printf colored("Step 5 of 7: extractors add mapping \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $exiftool_property };
extractors_add_mapping ($dnx_property, $exiftool_property);
extractors_add_mapping($dnx_property, $exiftool_property);
}
# include dnx property to classification group (Image(MIX))
# add mapping
# change to local format library
printf colored("Step 6 of 7: change to local format library \n", 'bold green');
change_to_local_format_library();
# logout
printf colored("Step 7 of 7: logout \n", 'bold green');
logout();
$driver->quit();
$driver->shutdown_binary();
printf colored("Finish! \n", 'bold green');