use of org.mycore.mets.model.simple.MCRMetsLink in project mycore by MyCoRe-Org.
the class MCRJSONSimpleModelConverterTest method testToSimpleModel.
@Test
public void testToSimpleModel() throws Exception {
MCRMetsSimpleModel metsSimpleModel = MCRJSONSimpleModelConverter.toSimpleModel(json);
MCRMetsSimpleModel compareSimpleModel = MCRMetsTestUtil.buildMetsSimpleModel();
MCRMetsSection s1RootSection = metsSimpleModel.getRootSection();
MCRMetsSection s2RootSection = compareSimpleModel.getRootSection();
Assert.assertEquals("labels of root must be the same", s1RootSection.getLabel(), s2RootSection.getLabel());
Assert.assertEquals("types of root must be the same", s1RootSection.getType(), s2RootSection.getType());
Assert.assertEquals("page count must be the same", metsSimpleModel.getMetsPageList().size(), compareSimpleModel.getMetsPageList().size());
List<MCRMetsLink> s1SectionPageLinkList = metsSimpleModel.getSectionPageLinkList();
List<MCRMetsLink> s2SectionPageLinkList = compareSimpleModel.getSectionPageLinkList();
for (int n = 0; n < 3; n++) {
Assert.assertEquals("from of " + n + " link must be the same", s1SectionPageLinkList.get(n).getFrom().getLabel(), s2SectionPageLinkList.get(n).getFrom().getLabel());
Assert.assertEquals("to of " + n + " link must be the same", s1SectionPageLinkList.get(n).getTo().getOrderLabel(), s2SectionPageLinkList.get(n).getTo().getOrderLabel());
}
}
use of org.mycore.mets.model.simple.MCRMetsLink in project mycore by MyCoRe-Org.
the class MCRJSONSimpleModelConverter method toSimpleModel.
public static MCRMetsSimpleModel toSimpleModel(String model) {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(MCRMetsLink.class, new MCRMetsLinkTypeAdapter());
gsonBuilder.registerTypeAdapter(MCRMetsAltoLink.class, new MCRAltoLinkTypeAdapter());
gsonBuilder.setPrettyPrinting();
MCRMetsSimpleModel metsSimpleModel = gsonBuilder.create().fromJson(model, MCRMetsSimpleModel.class);
Hashtable<String, MCRMetsPage> idPageMap = new Hashtable<>();
metsSimpleModel.getMetsPageList().stream().forEach(page -> idPageMap.put(page.getId(), page));
final Map<String, MCRMetsFile> idMCRMetsFileMap = extractIdFileMap(metsSimpleModel.getMetsPageList());
Hashtable<String, MCRMetsSection> idSectionMap = new Hashtable<>();
processSections(metsSimpleModel.getRootSection(), idSectionMap, idMCRMetsFileMap);
List<MCRMetsLink> sectionPageLinkList = metsSimpleModel.getSectionPageLinkList();
List<MCRMetsLink> metsLinks = sectionPageLinkList.stream().map((link) -> {
if (link instanceof MCRMetsLinkTypeAdapter.MCRMetsLinkPlaceholder) {
MCRMetsLinkTypeAdapter.MCRMetsLinkPlaceholder placeholder = (MCRMetsLinkTypeAdapter.MCRMetsLinkPlaceholder) link;
MCRMetsSection metsSection = idSectionMap.get(placeholder.getFromString());
MCRMetsPage metsPage = idPageMap.get(placeholder.getToString());
return new MCRMetsLink(metsSection, metsPage);
} else {
return link;
}
}).collect(toList());
sectionPageLinkList.clear();
sectionPageLinkList.addAll(metsLinks);
return metsSimpleModel;
}
use of org.mycore.mets.model.simple.MCRMetsLink in project mycore by MyCoRe-Org.
the class MCRMetsTestUtil method buildSimpleModelLinkList.
private static void buildSimpleModelLinkList(MCRMetsSimpleModel metsSimpleModel) {
List<MCRMetsLink> linkList = metsSimpleModel.sectionPageLinkList;
MCRMetsSection rootSection = metsSimpleModel.getRootSection();
List<MCRMetsPage> pageList = metsSimpleModel.getMetsPageList();
linkList.add(new MCRMetsLink(rootSection, pageList.get(0)));
linkList.add(new MCRMetsLink(rootSection.getMetsSectionList().get(0), pageList.get(1)));
linkList.add(new MCRMetsLink(rootSection.getMetsSectionList().get(1), pageList.get(2)));
}
Aggregations