import java.util.concurrent.BlockingQueue import org.antlr.stringtemplate.StringTemplate import org.antlr.stringtemplate.StringTemplateGroup import org.antlr.stringtemplate.language.DefaultTemplateLexer import eu.dnetlib.enabling.manager.msro.hope.groovy.RunnableGroovy import eu.dnetlib.hope.domains.common.LandingPage import eu.dnetlib.hope.domains.common.OAIHeader import eu.dnetlib.hope.domains.visual.LIDOCollection import eu.dnetlib.hope.domains.visual.LidoDescription import eu.dnetlib.hope.domains.visual.LidoPlace import eu.dnetlib.hope.domains.visual.LidoTitle import eu.dnetlib.hope.domains.visual.TypedSubjects import groovy.util.XmlParser /** * DNetGroovy class for SSA F5092. * @author alessia * */ class SozArchLIDO5092 implements RunnableGroovy { def String templatePath = "/var/lib/hope-scripts/templates" def SozArchUtils utils = new SozArchUtils() def BlockingQueue resultsQueue, inputQueue; def String collectionID = 'F_5092' /** * Driver namespace for elements in the OAI header. */ def dri = new groovy.xml.Namespace("http://www.driver-repository.eu/namespace/dri", 'dri') def generateCollectionRecord = { template, repoId, setSpec, dateOfCollection -> def String lPageURL = 'http://www.bild-video-ton.ch/archiv/images?Bilder.ssaBestand=F_5092 Meyer, Gerold' def String providerName = 'Schweizerisches Sozialarchiv' def String abstractSum=''' "Gerold Meyer wurde am 24. November 1900 in Zürich geboren. Nach seiner Ausbildung am heilpädagogischen Seminar arbeitet er 1924 und 1925 in österreichischen Lehrlingsheimen. 1926 nimmt er eine Stelle als Lehrer im Prättigau an, im gleichen Jahr findet seine Hochzeit mit Leni van Hasz, einer Enkelin von Herman Greulich, statt. In den folgenden Jahrzehnten ist Gerold Meyer weiterhin als Lehrer tätig, die Theaterarbeit mit Kindern und Jugendlichen tritt aber zunehmend in den Vordergrund. Ab den 1930er Jahren entstehen verschiedene Theaterprojekte. In den 1940er und 1950er Jahren wendet sich Meyer dem „mobilen Theater“ zu, seine Stücke werden auf Tram- und Eisenbahnwaggons oder Schiffen geprobt und aufgeführt. Ab den 1960er Jahren baut das Ehepaar Meyer-van Hasz in Brione s. Minusio zusammen mit vielen Helfern das „Haus der Freundschaft“, eine Begegnungsstätte für vorwiegend junge, pazifistisch eingestellte Menschen, wo Gerold und Leni Meyer-van Hasz in der Folge auch leben. Der Fotobestand widerspiegelt die verschiedenen Stationen von Gerold Meyers Leben und Schaffen. So hat es Fotografien aus seiner Zeit als Lehrer in verschiedenen Lehrlingserholungsheimen in Österreich und von seiner langjährigen Lehrtätigkeit in verschiedenen Schulen und Institutionen der Schweiz. Der grösste Teil der Fotografien dokumentiert jedoch seine Theaterprojekte, beispielsweise das „Karussell-Theater“ (1937/38), das „Tram-Theater“ (1945), das „Eisenbahn-Theater“ (1950) oder „das Spiel vom gleichen Boot“ (1951/52). Daneben zeigen Bilder der 1960er und 1970er Jahre, wie das „Haus der Freundschaft“ („Casale al Bivio“) in Brione s. Minusio entstand oder dokumentieren die Aktion „Cantiere della Gioventù“ (Locarno, 1971), die Gerold Meyer mitinitiierte. Weiter gehören zum Bestand auch einige Ansichtskarten (österreichische Lehrlingserholungsheime), verschiedene Zeichnungen sowie drei Glasplatten (u.a. eine Zeichnung zur Aktion „Jugend einigt Europa“, welche dem Theaterprojekt „Das Spiel vom gleichen Boot“ zugrunde lag). ''' def OAIHeader collOaiheader = new OAIHeader(dateOfCollection:dateOfCollection, repositoryId:repoId, setSpec:setSpec, identifier:collectionID, objIdentifier:repoId+"::"+collectionID) def LIDOCollection coll = new LIDOCollection(collectionID:collectionID, langCode:'ger', titles:[ new LidoTitle(value:'Meyer, Gerold (1900-1990)') ], abstractSummaries:[ new LidoDescription(type:'abstract', value:abstractSum) ], creationDates:['1910P92Y'], accumulationDates:['2012'], owners:[providerName], sizeItems:'296', itemType:'IMAGE', itemFormatStm:'', associatedPub:'http://www.findmittel.ch/archive/archNeu/Ar144.html', subjects:['Nachlass'], collItemLanguages:['ger', 'gsw',], typedSubjects:[ new TypedSubjects(type:'association', dates:['1910-2002'], places:[ new LidoPlace(preferredName:'CH') ]) ],repository:providerName, useRights:"Jede Art der Verwendung und der Reproduktion setzt eine Bewilligung und einen vereinbarten Zweck voraus. Jede weitere Nutzung bedarf der erneuten Zustimmung des Schweizerischen Sozialarchivs oder des jeweiligen Rechteinhabers.", accessRights:'Auf den Bestand oder auf Teile davon gewährt das Schweizerische Sozialarchiv öffentlichen, kostenlosen Zugang. Weitere Bestimmungen finden Sie auf unseren Websites.', europeanaType:'IMAGE', landingPage:new LandingPage(href:lPageURL, localID:lPageURL)) def String collection = coll.getXML(template, collOaiheader, providerName, coll) return collection } @Override public void run() { def StringTemplateGroup group = new StringTemplateGroup("visualGroup", templatePath, DefaultTemplateLexer.class); def StringTemplate template = group.getInstanceOf("visualTemplate"); //iterates on the input xml to generate records contained by the collection created above def parser = new XmlParser(false, true); def String input; def c = 0; while(!((input = this.inputQueue.take()).equals("END"))){ template.reset() def Node xmlRoot = parser.parseText(input) def Node oaiHeaderNode = xmlRoot.'**'.header[0] //Common OAI Header elements def dateOfCollection = oaiHeaderNode.'dri:dateOfCollection'.text() def repoId = oaiHeaderNode.'dri:repositoryId'.text() def setSpec = oaiHeaderNode.setSpec.text() //create collection from constants values from the mapping if(c == 0){ def String collection5017 = generateCollectionRecord(template, repoId, setSpec, dateOfCollection) resultsQueue.put(collection5017); c++ } def Node sozRoot = xmlRoot.'**'.ImagicXML[0] def NodeList sozObjects = sozRoot.Update.Row println "Found "+sozObjects.size()+" rows" sozObjects.each { String lidoObject = utils.transformSozObjekt(it, template, dateOfCollection, repoId, setSpec, collectionID, utils.generateDefaultResourceWrap) resultsQueue.put(lidoObject); c++ template.reset() } } println c +" lido objects enueued" this.resultsQueue.put("END") println "closedQueue" } @Override public void setResultsQueue(BlockingQueue queue) { this.resultsQueue = queue } @Override public void setInputQueue(BlockingQueue queue) { this.inputQueue = queue } /** * TODO: calling the method from the run() does not work. Kinda groovy strange stuff, I do not know why. */ @Override public void closeResultQueue() { this.resultsQueue.put("END") println "closedQueue" } /** * TODO: use this to set the repoId of the collection instead of the current trick * {@inheritDoc} * @see eu.dnetlib.enabling.manager.msro.hope.groovy.RunnableGroovy#setRepositoryId(java.lang.String) */ @Override public void setRepositoryId(String repoId) {} }