From 8083dfc45c585e9c35ebcab638ae673fd178d21d Mon Sep 17 00:00:00 2001 From: gexce Date: Mon, 30 Oct 2017 12:18:45 +0100 Subject: [PATCH] Motives --- AH MAM Migration/notes.txt | 18 ++- ...tegories_131017_EDITED_without_archive.csv | 126 +++++++++--------- ...egories_131017_EDITED_without_archive.xlsx | Bin 34026 -> 34988 bytes .../com/bayer/edam/migration/Definitions.java | 58 +++++++- .../edam/migration/MamMigrationSelective.java | 43 ++++-- .../edam/migration/adam/UploadRecord.java | 18 +++ 6 files changed, 178 insertions(+), 85 deletions(-) diff --git a/AH MAM Migration/notes.txt b/AH MAM Migration/notes.txt index f552a0f..3597be0 100644 --- a/AH MAM Migration/notes.txt +++ b/AH MAM Migration/notes.txt @@ -1,15 +1,21 @@ # 2017-10-27 - Vermerke im Excel nachziehen -- Brand Baytril existiert für CAP und FAP!! +- Brand Baytril existiert für CAP und FAP!! [erledigt] - CAP.Baytril scheint defekt (zeigt Motives an). Martin klärt via Megan. - evtl. Check einbauen für Widerspruch Brand <-> Business Unit +- Delivery Date in eDAM befüllen mit Date of Issue aus MAM [erledigt] +- Status 4 (Created) und 5 (Assigned) auf Status "Draft" setzen [erledigt] +- Problem: + {"exceptionMessage":"The collection already contains an item with the specified key." + 72 mal im Log, bspw. 63701, 63711, 43182 +- File upload +- Selections - Bilder hochladen für Assets von Claudias Liste -- Delivery Date in eDAM befüllen mit Date of Issue aus MAM -- Status 4 (Created) und 5 (Assigned) auf Status "Draft" setzen +- Umsetzen für PROD + - User müssen vorhanden sein! + - Definitions anpassen + - Check: Hotfix nötig auf PROD? - Go-Live AH 15. November -- Check: Hotfix nötig auf PROD? - - diff --git a/AH MAM Migration/resources/Media_Assistant_Categories_131017_EDITED_without_archive.csv b/AH MAM Migration/resources/Media_Assistant_Categories_131017_EDITED_without_archive.csv index f238d98..24695ef 100644 --- a/AH MAM Migration/resources/Media_Assistant_Categories_131017_EDITED_without_archive.csv +++ b/AH MAM Migration/resources/Media_Assistant_Categories_131017_EDITED_without_archive.csv @@ -212,78 +212,78 @@ campaign;(2016);;;;;Digital;;;; campaign;(2015);;;;;Logo;;;; campaign;(2015-2016);;;;;Print;;;; campaign;(2016);;;;;Videos;;;; -skip;BusinessUnit.General,Brand.General,MediaType.Guideline;;;Copyright Templates;-> unter Guidelines;;;;;"war: classify/MediaType.Guideline +classify;BusinessUnit.General,Brand.General,MediaType.Guideline;;;Copyright Templates;-> unter Guidelines;;;;;"war: classify/MediaType.Guideline Guidelines ist ein Media Type --> überschreiben? Wohin in der Struktur? Bspw. entry 34711 braucht: Business Unit und Brand" -skip;BusinessUnit.General,Brand.General,MediaType.Guideline;;;Guidelines;;;;;; -skip;;;;;AH Meeting Culture;;;;; -skip;;;;;Agency Briefing Templates;;;;; -skip;;;;;BAH eDetailer Template;;;;; -skip;BusinessUnit.CAP;;;;CAP Brand/Packaging Design;;;;;kann eine Guideline in Brand.General, aber in BusinessUnit CAP sein? -campaign;(2009-2017);;;;;Advantage Family;;;; -campaign;(2003-2012);;;;;Bolfo/Bayopet (OTC);;;; -campaign;(2012-2017);;;;;Drontal Product Family;;;; -campaign;(2014);;;;;Ethical Pack;;--> Cap.Others;; -campaign;(2005);;;;;Kiltix Products;;;; -campaign;(2017);;;;;Lifestyle Photography 2017;;;; -campaign;(2009-2012);;;;;Profender Products;;;; -campaign;(2011-2017);;;;;Seresto Packaging;;;; -skip;BusinessUnit.FAP;;;;FAP Brand/Packaging Design;;;;; -campaign;(2011);;;;;Farm Animal Products;;;; -campaign;(2006);;;;;Farmhygiene Products;;;; -skip;;;;;Global Exhibit Design Manual;;;;; +classify;BusinessUnit.General,Brand.General,MediaType.Guideline;;;Guidelines;;;;;; +keyword;;;;;AH Meeting Culture;;;;; +keyword;;;;;Agency Briefing Templates;;;;; +keyword;;;;;BAH eDetailer Template;;;;; +classify;BusinessUnit.CAP;;;;CAP Brand/Packaging Design;;;;; +classify;Brand.Advantage;;;;;Advantage Family;;;(2009-2017); +classify;Brand.Bolfo/Bay-o-Pet;;;;;Bolfo/Bayopet (OTC);;;(2003-2012); +classify;Brand.Drontal;;;;;Drontal Product Family;;;(2012-2017); +classify;Brand.CAP.Others;;;;;Ethical Pack;;--> Cap.Others;(2014); +classify;Brand.CAP.Others;;;;;Kiltix Products;;;(2005); +classify;Brand.CAP.Others;;;;;Lifestyle Photography 2017;;;(2017); +classify;Brand.Profender;;;;;Profender Products;;;(2009-2012); +classify;Brand.Seresto;;;;;Seresto Packaging;;;(2011-2017); +classify;BusinessUnit.FAP;;;;FAP Brand/Packaging Design;;;;; +classify;Brand.FAP.Others;;;;;Farm Animal Products;;;(2011); +classify;Brand.FAP.Others;;;;;Farmhygiene Products;;;(2006); +keyword;;;;;Global Exhibit Design Manual;;;;; not migrated;;;;;Training Tools - MediaAssistant;;;;; classify;BusinessUnit.General,Brand.General;;;Images;;;kommt komplett in Space General;;;Nach Motives-Baum unter Images -motives;;;;;Applications;;;;; -motives;;;;;Different animals together;;;;; -motives;;;;;Disease Symptoms;;;;; -motives;;;;;;Organs;;;; -motives;;;;;;Skin;;;; -motives;;;;;Examination/Sampling;;;;; -motives;;;;;Illustrations;;;;; -motives;;;;;;Animals and people;;;; -motives;;;;;;Application;;;; -motives;;;;;;Art;;;; +classify;Motive.Applications;;;;Applications;;;;; +classify;Motive.DifferentAnimalsTogether;;;;Different animals together;;;;; +classify;Motive.DeseaseSymptoms;;;;Disease Symptoms;;;;; +classify;Motive.DeseaseSymptoms.Organs;;;;;Organs;;;; +classify;Motive.DeseaseSymptoms.Skin;;;;;Skin;;;; +classify;Motive.Examination,Motive.Examination.Sampling;;;;Examination/Sampling;;;;Im neuen Baum aufgeteilt!; +classify;Motive.Illustrations;;;;Illustrations;;;;; +classify;Motive.Illustrations.AnimalsAndPeople;;;;;Animals and people;;;; +classify;Motive.Illustrations.Application;;;;;Application;;;; +classify;Motive.Illustrations.Art;;;;;Art;;;; keyword;;;;;;;Cat and DogART, Portugal;;; keyword;;;;;;;Cat and DogART, Prague;;; keyword;;;;;;;CattleART;;; keyword;;;;;;;PigART;;; keyword;;;;;;;PoultryART;;; keyword;;;;;;;SheepART;;; -motives;;;;;;Cells and microorganisms;;;; -motives;;;;;;Lifecycles & Routes of infection;;;; -motives;;;;;;Maps;;;; -motives;;;;;;Parasites;;;; -motives;;;;;;Pictograms;;;; -motives;;;;;Insects and arachnids;;;;; -motives;;;;;;Fleas;;;; -motives;;;;;;Flies;;;; -motives;;;;;;Lice;;;; -motives;;;;;;Mites;;;; -motives;;;;;;Mosquitoes;;;; -motives;;;;;;Ticks;;;; -motives;;;;;Laboratory;;;;; -motives;;;;;Microorganism;;;;; -motives;;;;;People;;;;; -motives;;;;;People with animals;;;;; -motives;;;;;Target animals;;;;; -motives;;;;;;Birds;;;; -motives;;;;;;Cats;;;; -motives;;;;;;Cattle;;;; -motives;;;;;;Dogs;;;; -motives;;;;;;Honey bees;;;; -keyword;;;;;;;Flowers;;; -motives;;;;;;Horses;;;; -motives;;;;;;Poultry;;;; -motives;;;;;;Reptiles and turtles;;;; -motives;;;;;;Sheep;;;; -motives;;;;;;Small furry animals;;;; -motives;;;;;;Swine;;;; -motives;;;;;;Zoo and other animals;;;; -motives;;;;;Worms (Helminths);;;;; -motives;;;;;;Roundworms;;;; -motives;;;;;;Tapeworms;;;; -not migrated;;;;Logos;;;;--> Nachbereitung;;bitte den Brands zuordnen +classify;Motive.Illustrations.CellsAndMicroorganisms;;;;;Cells and microorganisms;;;; +classify;Motive.Illustrations.Lifecycles;;;;;Lifecycles & Routes of infection;;;; +classify;Motive.Illustrations.Maps;;;;;Maps;;;; +classify;Motive.Illustrations.Parasites;;;;;Parasites;;;; +classify;Motive.Illustrations.Pictograms;;;;;Pictograms;;;; +classify;Motive.InsectsAndArachnids;;;;Insects and arachnids;;;;Motive.InsectsAndArachnids.Pictograms löschen?; +classify;Motive.InsectsAndArachnids.Fleas;;;;;Fleas;;;; +classify;Motive.InsectsAndArachnids.Flies;;;;;Flies;;;; +classify;Motive.InsectsAndArachnids.Lice;;;;;Lice;;;; +classify;Motive.InsectsAndArachnids.Mites;;;;;Mites;;;; +classify;Motive.InsectsAndArachnids.Mosquitoes;;;;;Mosquitoes;;;; +classify;Motive.InsectsAndArachnids.Ticks;;;;;Ticks;;;; +skip;;;;;Laboratory;;;;Existiert nicht im neuen Baum; +skip;;;;;Microorganism;;;;Existiert nicht im neuen Baum; +classify;Motive.People;;;;People;;;;; +classify;Motive.PeopleWithAnimals;;;;People with animals;;;;; +classify;Motive.TargetAnimals;;;;Target animals;;;;; +classify;Motive.TargetAnimals.Birds;;;;;Birds;;;; +classify;Motive.TargetAnimals.Cats;;;;;Cats;;;; +classify;Motive.TargetAnimals.Cattle;;;;;Cattle;;;; +classify;Motive.TargetAnimals.Dogs;;;;;Dogs;;;; +classify;Motive.TargetAnimals.HoneyBees;;;;;Honey bees;;;; +classify;Motive.TargetAnimals.Flowers;;;;;;Flowers;;"Flowers als ""Target Animal""?"; +classify;Motive.TargetAnimals.Horses;;;;;Horses;;;; +classify;Motive.TargetAnimals.Poultry;;;;;Poultry;;;; +classify;Motive.TargetAnimals.ReptilesAndTurtles;;;;;Reptiles and turtles;;;; +classify;Motive.TargetAnimals.Sheep;;;;;Sheep;;;; +classify;Motive.TargetAnimals.SmallFurryAnimals;;;;;Small furry animals;;;; +classify;Motive.TargetAnimals.Swine;;;;;Swine;;;; +classify;Motive.TargetAnimals.ZooAndOtherAnimals;;;;;Zoo and other animals;;;; +classify;Motive.Worms;;;;Worms (Helminths);;;;; +classify;Motive.Worms.Roundworms;;;;;Roundworms;;;; +classify;Motive.Worms.Tapeworms;;;;;Tapeworms;;;; +classify;BusinessUnit.General,Brand.General,Migration.Logos;;;Logos;;;;;--> Nachbereitung;bitte den Brands zuordnen skip;;;;Packshots;;;;;; classify;BusinessUnit.CAP,Brand.Advantage;;;;Advantage;;;;; classify;BusinessUnit.CAP,Brand.Advantix;;;;Advantix;;;;; @@ -341,7 +341,7 @@ brand;;;;;;Seresto;;;; not migrated;;;BAH Image series;;;;;;;wird nicht migriert skip;;;;Image series 1;;;;;; skip;;;;Image series 2;;;;;; -not migrated;Status.Archived;;BAH Internal Videos;;"alle ins Archiv -> unter classification ""interne Videos""";;;--> General;;BusinessUnit? Brand? +classify;Status.Archived,BusinessUnit.General,Brand.General,MediaType.InternalTrainingVideo;;BAH Internal Videos;;"alle ins Archiv -> unter classification ""interne Videos""";;;--> General;;BusinessUnit? Brand? not migrated;;;BAH Webshop;;;;;;;wird nicht migriert skip;;;;Advantage;;;;;; skip;;;;Advantix;;;;;; diff --git a/AH MAM Migration/resources/Media_Assistant_Categories_131017_EDITED_without_archive.xlsx b/AH MAM Migration/resources/Media_Assistant_Categories_131017_EDITED_without_archive.xlsx index 91a0d23bd2e53f01705284791cc8def7ff452dda..b940ce22b187b5e8f1097df0ab30acbfec586779 100644 GIT binary patch delta 26615 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 delta 25677 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 T_21ATe(^zJR39h<{?qzjp}utU diff --git a/AH MAM Migration/src/com/bayer/edam/migration/Definitions.java b/AH MAM Migration/src/com/bayer/edam/migration/Definitions.java index 5a34663..89c59a9 100644 --- a/AH MAM Migration/src/com/bayer/edam/migration/Definitions.java +++ b/AH MAM Migration/src/com/bayer/edam/migration/Definitions.java @@ -27,9 +27,11 @@ public class Definitions { static { classifications = new HashMap(); - classifications.put("MediaAssistant-Migration", new WriteClassification("2bd24882-b7d8-4d30-8e6f-a7ef00eb33e7", 1)); + classifications.put("Migration", new WriteClassification("2bd24882-b7d8-4d30-8e6f-a7ef00eb33e7", 1)); + classifications.put("Migration.Logos", new WriteClassification("de96f8db1de44cc6841ba81c00b9db8e", 1)); classifications.put("Test-GEXCE", new WriteClassification("f1d058987a3043d5b021a819007ff3c0", 1)); + classifications.put("Country.Global", new WriteClassification("dff7666b-326b-4e1c-912c-a7b4006c8500", 1)); // /Definitions/Animal Health/Country classifications.put("Agencies.Bayer AH", new WriteClassification("8de5ef0e-3c6d-451c-b82b-a7b4006c954c", 1)); // /Definitions/Agencies/Bayer classifications.put("Usage.Unrestricted", new WriteClassification("6b95a635-40e9-4782-ad5f-a73100a2bb94", 1)); @@ -52,7 +54,7 @@ public class Definitions { classifications.put("Brand.Advantage", new WriteClassification("b3f04996de1644df9d08a6dd00cff70e", 1)); classifications.put("Brand.Advantix", new WriteClassification("dc758de7d91e44d6a768a6dd00cff7ad", 1)); classifications.put("Brand.Advocate", new WriteClassification("c7979fc30bb843e486bba6dd00cff835", 1)); - classifications.put("Brand.Baytril", new WriteClassification("9c8a43adf3324ca6adb0a7d000f427f5", 1)); + classifications.put("Brand.CAP.Baytril", new WriteClassification("9c8a43adf3324ca6adb0a7d000f427f5", 1)); classifications.put("Brand.Bolfo/Bay-o-Pet", new WriteClassification("922a46fc3f6a44bfb025a7d000f428ac", 1)); classifications.put("Brand.CVBD", new WriteClassification("fc84b38665a44291a24ba70f00f7aa1f", 1)); classifications.put("Brand.Droncit", new WriteClassification("86251780660d4faf95cda7cb010c40fe", 1)); @@ -61,6 +63,7 @@ public class Definitions { classifications.put("Brand.Profender", new WriteClassification("6be697c82ec34354b0c3a6dd00cffc04", 1)); classifications.put("Brand.Seresto", new WriteClassification("2aea5f8d28294cde8346a6dd00cffc75", 1)); classifications.put("Brand.Veraflox", new WriteClassification("c2bd6003fa6b4093a50fa6dd00cffd3e", 1)); + classifications.put("Brand.CAP.Others", new WriteClassification("90ffb7a44897480aa2eaa70f00f7a8db", 1)); classifications.put("Brand.miscellaneous", new WriteClassification("bc9d93616c0548f99f7fa6dd00cff69d", 1)); classifications.put("Brand.Miscellaneous", new WriteClassification("bc9d93616c0548f99f7fa6dd00cff69d", 1)); @@ -68,7 +71,7 @@ public class Definitions { // FAP classifications.put("Brand.Baycox", new WriteClassification("ef3028f6ba8744508035a6dd00cffe45", 1)); classifications.put("Brand.Bayticol", new WriteClassification("bd1819c976e643bf916ba6dd00cffec4", 1)); - classifications.put("Brand.Baytril", new WriteClassification("1053978a142742ad8033a6dd00cfff42", 1)); + classifications.put("Brand.FAP.Baytril", new WriteClassification("1053978a142742ad8033a6dd00cfff42", 1)); classifications.put("Brand.Bayvarol", new WriteClassification("4f4816c552e04630b575a6dd00cfffcf", 1)); classifications.put("Brand.Biosecurity", new WriteClassification("ea123567d7174daf8a7ca6dd00d0008a", 1)); classifications.put("Brand.Catosal", new WriteClassification("55fba5b1c9084c74905ba6dd00d0011c", 1)); @@ -100,9 +103,55 @@ public class Definitions { classifications.put("MediaType.Toolkit", new WriteClassification("463c194bd93b4a6caa63a73100a2a2e4", 1)); classifications.put("MediaType.unassigned", new WriteClassification("6995d663c07f406c8b45a6dd00cff466", 1)); classifications.put("MediaType.Video", new WriteClassification("4f9d38b889eb46f58d79a73100a2b55a", 1)); - classifications.put("MediaType.Image", new WriteClassification("58f655cbd4214a72bb2aa73100a2a3dd", 1)); + classifications.put("MediaType.Image", new WriteClassification("7d1e20b9f244423b9214a7f400d3ae68", 1)); classifications.put("MediaType.Packshot", new WriteClassification("ba5a96a7d94245e48f14a73100a2a97c", 1)); classifications.put("MediaType.Guideline", new WriteClassification("a3c6732752274a99817ba7dd007a207f", 1)); + classifications.put("MediaType.InternalTrainingVideo", new WriteClassification("b5c1b8b0ad8a41aebbb8a7b4008f2faa", 1)); + + // Motives + classifications.put("Motive.Applications", new WriteClassification("3c7a687b5c7e4450994fa6dd00d00b7e", 1)); + classifications.put("Motive.DifferentAnimalsTogether", new WriteClassification("cadd6c53ad7e411a838ea6dd00d00d28", 1)); + classifications.put("Motive.DeseaseSymptoms", new WriteClassification("62dd3a2a2cfe4266a93da6dd00d00dda", 1)); + classifications.put("Motive.DeseaseSymptoms.Organs", new WriteClassification("1f8f1d29b64f4ba897c5a6dd00d00e5d", 1)); + classifications.put("Motive.DeseaseSymptoms.Skin", new WriteClassification("1583970b4a0c4a648a7ba6dd00d011d3", 1)); + classifications.put("Motive.Examination", new WriteClassification("d601204f0177418eb42fa6dd00d012c2", 1)); + classifications.put("Motive.Examination.Sampling", new WriteClassification("b3eef1efba974c4d8d26a6dd00d01338", 1)); + classifications.put("Motive.Illustrations", new WriteClassification("5222fed4a54f4098927da6dd00d0151f", 1)); + classifications.put("Motive.Illustrations.AnimalsAndPeople", new WriteClassification("9af3cab737a845bda757a6dd00d0168d", 1)); + classifications.put("Motive.Illustrations.Application", new WriteClassification("4f9017f9f2384e2a96a4a6dd00d01760", 1)); + classifications.put("Motive.Illustrations.Art", new WriteClassification("bbc2d76be6e14fcdba09a6dd00d018e9", 1)); + classifications.put("Motive.Illustrations.CellsAndMicroorganisms", new WriteClassification("21aba242e8394ac38e1ea6dd00d02012", 1)); + classifications.put("Motive.Illustrations.Lifecycles", new WriteClassification("fdd0f975332347f0b1d2a6dd00d02350", 1)); + classifications.put("Motive.Illustrations.Maps", new WriteClassification("a39238ab79ae46bd8b5aa6dd00d0242c", 1)); + classifications.put("Motive.Illustrations.Parasites", new WriteClassification("284f50ca98544ea890fda6dd00d02697", 1)); + classifications.put("Motive.Illustrations.Pictograms", new WriteClassification("27443cb009e94f27bb8ea6dd00d02863", 1)); + classifications.put("Motive.InsectsAndArachnids", new WriteClassification("32f8e74dc3334d689dbda6dd00d0293a", 1)); + classifications.put("Motive.InsectsAndArachnids.Pictograms", new WriteClassification("a92634ae638449b1b768a6dd00d029ed", 1)); + classifications.put("Motive.InsectsAndArachnids.Fleas", new WriteClassification("cfcb33174cf04feea597a6dd00d02a66", 1)); + classifications.put("Motive.InsectsAndArachnids.Flies", new WriteClassification("0dc040dd346c474585f6a6dd00d02b0a", 1)); + classifications.put("Motive.InsectsAndArachnids.Lice", new WriteClassification("c5cf728877b642239392a6dd00d02be7", 1)); + classifications.put("Motive.InsectsAndArachnids.Mites", new WriteClassification("35f9456f8d7a460f802fa6dd00d02d59", 1)); + classifications.put("Motive.InsectsAndArachnids.Mosquitoes", new WriteClassification("6be89e8457b748b7a32ba6dd00d02e8a", 1)); + classifications.put("Motive.InsectsAndArachnids.Ticks", new WriteClassification("b0b1fde8d5b34e1680f4a6dd00d02f33", 1)); + classifications.put("Motive.People", new WriteClassification("46bcb4b963194d4e9a40a6dd00d0303e", 1)); + classifications.put("Motive.PeopleWithAnimals", new WriteClassification("579bf5f6c03b43ed86b6a6dd00d03140", 1)); + classifications.put("Motive.TargetAnimals", new WriteClassification("8a14eb12dbe54fe0bfcfa6dd00d031df", 1)); + classifications.put("Motive.TargetAnimals.Birds", new WriteClassification("be13c44e72574f1092cba6dd00d03393", 1)); + classifications.put("Motive.TargetAnimals.Cats", new WriteClassification("a79655a321104441b15aa6dd00d033fa", 1)); + classifications.put("Motive.TargetAnimals.Cattle", new WriteClassification("eae408e2597e41469d9ba6dd00d034a3", 1)); + classifications.put("Motive.TargetAnimals.Dogs", new WriteClassification("87d3b6843cf24141b4c4a6dd00d0364d", 1)); + classifications.put("Motive.TargetAnimals.HoneyBees", new WriteClassification("4a95af72f0264e6b8d8aa6dd00d03704", 1)); + classifications.put("Motive.TargetAnimals.Flowers", new WriteClassification("b922f71a29e448e994caa6dd00d03a05", 1)); + classifications.put("Motive.TargetAnimals.Horses", new WriteClassification("600ed3e1e63445bfa132a6dd00d03b10", 1)); + classifications.put("Motive.TargetAnimals.Poultry", new WriteClassification("15d6bbf845e84602b883a6dd00d03bb9", 1)); + classifications.put("Motive.TargetAnimals.ReptilesAndTurtles", new WriteClassification("59112780491c41fe8061a6dd00d03c83", 1)); + classifications.put("Motive.TargetAnimals.Sheep", new WriteClassification("17961e4ff94c49e3b722a6dd00d03d47", 1)); + classifications.put("Motive.TargetAnimals.SmallFurryAnimals", new WriteClassification("85fc43e7877d4ff2b141a6dd00d041bf", 1)); + classifications.put("Motive.TargetAnimals.Swine", new WriteClassification("ee572615033549ef8672a6dd00d04268", 1)); + classifications.put("Motive.TargetAnimals.ZooAndOtherAnimals", new WriteClassification("ee28e01cfdf64e738360a6dd00d0436a", 1)); + classifications.put("Motive.Worms", new WriteClassification("be9e2b31ec4f424399f0a6dd00d04404", 1)); + classifications.put("Motive.Worms.Roundworms", new WriteClassification("176f6e972cc24445a34aa6dd00d04653", 1)); + classifications.put("Motive.Worms.Tapeworms", new WriteClassification("b7cdd4655c124e7394d8a6dd00d04755", 1)); classificationGuidToKeyMap = new HashMap(); for (Entry entry : classifications.entrySet()) { @@ -112,6 +161,7 @@ public class Definitions { // Fields fieldIDs = new HashMap(); fieldIDs.put("byr_Title", "31f337fa-add6-4e25-a672-a68a00d4ff3b"); + fieldIDs.put("byr_ah_deliveryDate", "b94fe50e-4a3b-4c40-9ac0-a731010bbb99"); fieldIDs.put("byr_ah_approvalNumber", "69d65b63-613b-49d6-bc11-a731010bbec8"); fieldIDs.put("byr_ah_description", "f9e40f87-493e-4f17-b129-a6dd00d063b2"); // Additional Information fieldIDs.put("byr_ah_projectLead", "5400d446-9d95-4158-ac06-a6dd00d06a12"); diff --git a/AH MAM Migration/src/com/bayer/edam/migration/MamMigrationSelective.java b/AH MAM Migration/src/com/bayer/edam/migration/MamMigrationSelective.java index 403a843..ecf4ace 100644 --- a/AH MAM Migration/src/com/bayer/edam/migration/MamMigrationSelective.java +++ b/AH MAM Migration/src/com/bayer/edam/migration/MamMigrationSelective.java @@ -52,7 +52,7 @@ public class MamMigrationSelective implements CommandLineRunner { static final String adamHost = "https://edam-q.bayer.com:2015"; static final String mamHost = "https://service.media-assistant.animalhealth.bayer.com"; - private List entrySelection = new ArrayList(Arrays.asList( 72048, 60984 )); + private List entrySelection = new ArrayList(Arrays.asList( 63701, 63711, 43182 )); // 72048, 60984 static final String categoryJson = "resources/2017-10-19_categories.json"; static final String categoryMapping = "resources/Media_Assistant_Categories_131017_EDITED_without_archive.csv"; @@ -73,7 +73,7 @@ public class MamMigrationSelective implements CommandLineRunner { HttpHeaders adamHeaders, mamHeaders; HttpEntity adamHeadersEntity; -// private SimpleDateFormat isoDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); + 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(); @@ -85,7 +85,7 @@ public class MamMigrationSelective implements CommandLineRunner { public void run(String... strings) throws Exception { // XXX - readEntryIDsFromFile(); +// readEntryIDsFromFile(); log.info("Write log headers for " + entryLog.getAbsolutePath()); FileUtils.writeStringToFile(entryLog, "Location" + fieldSeparator + "Entry" + lineSeparator, Charset.forName("utf-8")); @@ -161,7 +161,7 @@ public class MamMigrationSelective implements CommandLineRunner { Set keywords = new HashSet(); // globally applicable classifications - record.addClassification("MediaAssistant-Migration"); + record.addClassification("Migration"); record.addClassification("Country.Global"); record.addClassification("Agencies.Bayer AH"); record.addClassification("Usage.Restricted"); @@ -209,31 +209,41 @@ public class MamMigrationSelective implements CommandLineRunner { // Status "Released" is weaker than the other statuses if (p.startsWith("Status.")) { - if (!p.equals("Status.Released")) - record.removeClassification("Status.Released"); - else if (record.hasClassificationStartingWith("Status.Draft") - || record.hasClassificationStartingWith("Status.Archived")) { + if (p.equals("Status.Released") && record.hasClassificationStartingWith("Status.")) { log.warn("Classification Status.Released not added, different status already set"); continue; } + else { + record.removeClassificationsStartingWith("Status."); + } } + // Business unit "General" is weaker than the other business units if (p.startsWith("BusinessUnit.")) { - record.removeClassification("BusinessUnit.CAP"); - record.removeClassification("BusinessUnit.FAP"); - record.removeClassification("BusinessUnit.General"); + if (p.equals("BusinessUnit.General") && record.hasClassificationStartingWith("BusinessUnit.")) { + log.warn("Classification BusinessUnit.General not added, different business unit already set"); + continue; + } + else { + record.removeClassificationsStartingWith("BusinessUnit."); + } } + // Brand "General" is weaker than the other brands if (p.startsWith("Brand.")) { if (p.equals("Brand.General") && record.hasClassificationStartingWith("Brand.")) { log.warn("Classification Brand.General not added, different brand already set"); continue; } else { - record.removeClassification("Brand.General"); + record.removeClassificationsStartingWith("Brand."); } } + if (p.startsWith("MediaType.")) { + record.removeClassification("MediaType."); + } + record.addClassification(p); } } @@ -322,6 +332,13 @@ public class MamMigrationSelective implements CommandLineRunner { } + // Set Status.Draft for entries with stateId == 5 (Created) or 4 (Assigned) + if (entry.stateId == 4 || entry.stateId == 5) { + log.debug("Entry has status " + entry.stateId + ", setting record status to 'Draft'"); + record.removeClassification("Status.Released"); + record.addClassification("Status.Draft"); + } + // Fields if (entry.name.get("en") != null) { record.addField("byr_Title", entry.name.get("en")); @@ -331,6 +348,8 @@ public class MamMigrationSelective implements CommandLineRunner { record.addField("byr_Title", "No title"); } + record.addField("byr_ah_deliveryDate", isoDate.format(entry.creationDate)); + // Project lead if (entry.user != null && entry.user.get("id") != null) { if (Definitions.users.get(entry.user.get("id")) != null) { diff --git a/AH MAM Migration/src/com/bayer/edam/migration/adam/UploadRecord.java b/AH MAM Migration/src/com/bayer/edam/migration/adam/UploadRecord.java index 2d1596e..75cf42e 100644 --- a/AH MAM Migration/src/com/bayer/edam/migration/adam/UploadRecord.java +++ b/AH MAM Migration/src/com/bayer/edam/migration/adam/UploadRecord.java @@ -108,6 +108,24 @@ public class UploadRecord { log.debug("Removed classification " + name); } + public boolean removeClassificationsStartingWith(String prefix) { + List keysToRemove = new ArrayList(); + + for (WriteClassification c : classifications.addOrUpdate) { + String key = Definitions.classificationGuidToKeyMap.get(c.id); + if (key != null && key.startsWith(prefix)) + keysToRemove.add(key); + } + + if (keysToRemove.size() > 0) { + for (String key : keysToRemove) + removeClassification(key); + return true; + } + + return false; + } + public boolean hasClassificationStartingWith(String prefix) { for (WriteClassification c : classifications.addOrUpdate) { String key = Definitions.classificationGuidToKeyMap.get(c.id);