EntryDownloader

This commit is contained in:
gexce
2017-09-20 16:21:06 +02:00
parent 9d8699004a
commit a88d58752d
5 changed files with 142 additions and 11 deletions
+43 -5
View File
@@ -1,6 +1,6 @@
- English only?
- CreationDate ist read-only
- Mapping Media Type
- Mapping Media Type --> bringt Martin mit
- Wer soll als byr_ah_projectLead gesetzt werden? Brand Comm representative für beide Felder?
- Soll muss der MAM-Uploader irgendwo gespeichert werden?
- "Bayer Animal Health GmbH" immer als License Holder OK?
@@ -8,14 +8,25 @@
- MAM-Status "ARCHIVED" --> eDAM.Archived?
- Was ist mit Status != ACCEPTED or ARCHIVED?
- Regelung Cutover: Kein Upload mehr ab KW42 (16.10.)
- Wenn License Holder nicht gesetzt, trotzdem BAH GmbH? (bspw. 00070763)
- Beispiel für ausgefüllte GPC-Daten
License:
- Wenn License Holder nicht gesetzt, trotzdem BAH GmbH? (bspw. 00070763) --> mandatory
- release.forInternet/forIntranet --> License comments
- GPC owner/e-mail?
GPC:
- Beispiel für ausgefüllte GPC-Daten/Wird GPC-Block verwendet?
- was ist mit regionalLicenseComment/personalLicenseComment?
- Wird GPC-Block verwendet?
- Ist "Date of Issue" Release Date? Ist gpc.expirationDate = Retire Date?
- Ist "Date of Issue" Release Date? Ist gpc.expirationDate = LMR Expiration Date?
- GPC No. = LMR ID?
- Timeline
- Fertigstellung Migrations-Programm
- Download/Upload Metadaten
- Download/Upload Dateien
CREATE TABLE Record (
ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,
Location VARCHAR NOT NULL,
@@ -30,3 +41,30 @@ SELECT * FROM Record;
CALL CSVWRITE ('C:/Temp/Migration AH/entries.csv', 'SELECT * FROM Record', 'charset=UTF-8');
DROP ALL OBJECTS
CREATE TABLE Entry (
ID INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH 0) NOT NULL PRIMARY KEY,
EntryId INTEGER NOT NULL,
EntryIdString VARCHAR NOT NULL,
MediaType INTEGER NOT NULL,
Filesize BIGINT NOT NULL,
Json VARCHAR NOT NULL)
AS SELECT
null,
EntryId,
EntryIdString,
MediaType,
Filesize,
Json
FROM CSVREAD('C:/Temp/Migration AH/migration.log', 'EntryId|~|EntryIdString|~|MediaType|~|Filesize|~|Json', 'charset=UTF-8 fieldSeparator=|~|');
SELECT * FROM Entry;
CALL CSVWRITE ('C:/Temp/Migration AH/migration.csv', 'SELECT * FROM Entry', 'charset=UTF-8');
@@ -0,0 +1,74 @@
package com.bayer.edam.migration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.PropertySource;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.web.client.RestTemplate;
import com.bayer.edam.migration.mam.Entry;
import com.bayer.edam.migration.mam.Entry.Download;
import com.bayer.edam.migration.mam.Entrylist;
import com.fasterxml.jackson.databind.ObjectMapper;
@SpringBootApplication
@PropertySource("file:secret.properties")
public class EntryDownloader implements CommandLineRunner {
private static final Logger log = LoggerFactory.getLogger(EntryDownloader.class);
@Value("${mam.auth}")
private String mamAuth;
static final String mamHost = "https://service.media-assistant.animalhealth.bayer.com";
static final String separator = "|~|";
private ObjectMapper jsonMapper = new ObjectMapper();
private RestTemplate restTemplate = new RestTemplate();
@Override
public void run(String... strings) throws Exception {
HttpHeaders headers = new HttpHeaders();
headers.add("Accept", "application/json");
headers.add("Authorization", "Basic " + mamAuth);
headers.add("Content-Type", "application/json");
headers.add("From", "migration@bayer.com");
HttpEntity<String> entity = new HttpEntity<String>("", headers);
int lastPage = 1;
for (int pageNum = 1; pageNum <= lastPage; pageNum++) {
Entrylist entrylist = restTemplate.exchange(mamHost + "/rest/migration/entrylist?pagenumber={pagenum}&pagesize=500", HttpMethod.GET, entity, Entrylist.class, pageNum).getBody();
lastPage = entrylist.lastPage;
for (int i = 0; i < entrylist.entries.length; i++) {
String entryJson = restTemplate.exchange(mamHost + "/rest/migration/entry/{id}", HttpMethod.GET, entity, String.class, entrylist.entries[i].mediaAssistantId).getBody();
Entry entry = jsonMapper.readValue(entryJson, Entry.class);
long aggregatedFilesize = 0;
for (Download download : entry.downloadList) {
aggregatedFilesize += download.size;
}
for (Download download : entry.downloadListPublicFolder) {
aggregatedFilesize += download.size;
}
log.info(entry.id + separator + entry.mediaAssistantId + separator + entry.stateId + separator + aggregatedFilesize + separator + entryJson);
}
}
}
public static void main(String args[]) {
SpringApplication.run(EntryDownloader.class, args);
}
}
@@ -34,7 +34,7 @@ import com.bayer.edam.migration.adam.WriteRecord;
import com.bayer.edam.migration.mam.Entry;
import com.fasterxml.jackson.databind.ObjectMapper;
@SpringBootApplication
//@SpringBootApplication
@PropertySource("file:secret.properties")
public class MamMigrationSelective implements CommandLineRunner {
@@ -60,10 +60,9 @@ public class MamMigrationSelective implements CommandLineRunner {
HttpHeaders adamHeaders, mamHeaders;
HttpEntity<String> adamHeadersEntity;
private static SimpleDateFormat isoDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
private static SimpleDateFormat stringDate = new SimpleDateFormat("yyyy-MM-dd");
private static ObjectMapper jsonMapper = new ObjectMapper();
private SimpleDateFormat isoDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'");
private SimpleDateFormat stringDate = new SimpleDateFormat("yyyy-MM-dd");
private ObjectMapper jsonMapper = new ObjectMapper();
private List<String> locations = new ArrayList<String>();
@@ -4,9 +4,12 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
/**
* Representation of /rest/migration/entry
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class Entry {
public static class Type {
@@ -37,7 +40,6 @@ public class Entry {
public static class Gpc {
public Long id;
public Map<String, String> owner;
public Map<String, String> organization;
public String gpcState;
public String gpcNumber;
public Date expirationDate;
@@ -45,6 +47,7 @@ public class Entry {
public Integer gpcStateId;
}
@JsonIgnoreProperties(ignoreUnknown = true)
public static class Download {
public Long id;
public String href;
@@ -0,0 +1,17 @@
package com.bayer.edam.migration.mam;
public class Entrylist {
public static class EntryOverview {
public String mediaAssistantId;
public int entryStateId;
public int mediaTypeId;
}
public int totalHits;
public int currentPage;
public int lastPage;
public int pageSize;
public EntryOverview[] entries;
}