⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cswharvester.java

📁 联合国农粮署牵头开发的geonetwork源代码最新版
💻 JAVA
字号:
//=============================================================================//===	Copyright (C) 2001-2007 Food and Agriculture Organization of the//===	United Nations (FAO-UN), United Nations World Food Programme (WFP)//===	and United Nations Environment Programme (UNEP)//===//===	This program is free software; you can redistribute it and/or modify//===	it under the terms of the GNU General Public License as published by//===	the Free Software Foundation; either version 2 of the License, or (at//===	your option) any later version.//===//===	This program is distributed in the hope that it will be useful, but//===	WITHOUT ANY WARRANTY; without even the implied warranty of//===	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU//===	General Public License for more details.//===//===	You should have received a copy of the GNU General Public License//===	along with this program; if not, write to the Free Software//===	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA//===//===	Contact: Jeroen Ticheler - FAO - Viale delle Terme di Caracalla 2,//===	Rome - Italy. email: geonetwork@osgeo.org//==============================================================================package org.fao.geonet.kernel.harvest.harvester.csw;import java.io.File;import java.sql.SQLException;import java.util.UUID;import jeeves.exceptions.BadInputEx;import jeeves.interfaces.Logger;import jeeves.resources.dbms.Dbms;import jeeves.server.context.ServiceContext;import jeeves.server.resources.ResourceManager;import org.fao.geonet.constants.Geonet;import org.fao.geonet.kernel.harvest.harvester.AbstractHarvester;import org.fao.geonet.kernel.harvest.harvester.AbstractParams;import org.fao.geonet.lib.Lib;import org.jdom.Element;//=============================================================================public class CswHarvester extends AbstractHarvester{	//--------------------------------------------------------------------------	//---	//--- Static init	//---	//--------------------------------------------------------------------------	public static void init(ServiceContext context) throws Exception {}	//--------------------------------------------------------------------------	//---	//--- Harvesting type	//---	//--------------------------------------------------------------------------	public String getType() { return "csw"; }	//--------------------------------------------------------------------------	//---	//--- Init	//---	//--------------------------------------------------------------------------	protected void doInit(Element node) throws BadInputEx	{		params = new CswParams(dataMan);		params.create(node);	}	//---------------------------------------------------------------------------	//---	//--- doDestroy	//---	//---------------------------------------------------------------------------	protected void doDestroy(Dbms dbms) throws SQLException	{		File icon = new File(context.getAppPath() +"images/logos", params.uuid +".gif");		icon.delete();		Lib.sources.delete(dbms, params.uuid);	}	//---------------------------------------------------------------------------	//---	//--- Add	//---	//---------------------------------------------------------------------------	protected String doAdd(Dbms dbms, Element node) throws BadInputEx, SQLException	{		params = new CswParams(dataMan);		//--- retrieve/initialize information		params.create(node);		//--- force the creation of a new uuid		params.uuid = UUID.randomUUID().toString();		String id = settingMan.add(dbms, "harvesting", "node", getType());		storeNode(dbms, params, "id:"+id);		Lib.sources.update(dbms, params.uuid, params.name, true);		Lib.sources.copyLogo(context, "/images/harvesting/"+ params.icon, params.uuid);		return id;	}	//---------------------------------------------------------------------------	//---	//--- Update	//---	//---------------------------------------------------------------------------	protected void doUpdate(Dbms dbms, String id, Element node) throws BadInputEx, SQLException	{		CswParams copy = params.copy();		//--- update variables		copy.update(node);		String path = "harvesting/id:"+ id;		settingMan.removeChildren(dbms, path);		//--- update database		storeNode(dbms, copy, path);		//--- we update a copy first because if there is an exception CswParams		//--- could be half updated and so it could be in an inconsistent state		Lib.sources.update(dbms, copy.uuid, copy.name, true);		Lib.sources.copyLogo(context, "/images/harvesting/"+ copy.icon, copy.uuid);		params = copy;	}	//---------------------------------------------------------------------------	protected void storeNodeExtra(Dbms dbms, AbstractParams p, String path,											String siteId, String optionsId) throws SQLException	{		CswParams params = (CswParams) p;		settingMan.add(dbms, "id:"+siteId, "capabUrl", params.capabUrl);		settingMan.add(dbms, "id:"+siteId, "icon",     params.icon);		//--- store search nodes		for (Search s : params.getSearches())		{			String  searchID = settingMan.add(dbms, path, "search", "");			settingMan.add(dbms, "id:"+searchID, "freeText", s.freeText);			settingMan.add(dbms, "id:"+searchID, "title",    s.title);			settingMan.add(dbms, "id:"+searchID, "abstract", s.abstrac);			settingMan.add(dbms, "id:"+searchID, "subject",  s.subject);		}	}	//---------------------------------------------------------------------------	//---	//--- AbstractParameters	//---	//---------------------------------------------------------------------------	protected AbstractParams getParams() { return params; }	//---------------------------------------------------------------------------	//---	//--- AddInfo	//---	//---------------------------------------------------------------------------	protected void doAddInfo(Element node)	{		//--- if the harvesting is not started yet, we don't have any info		if (result == null)			return;		//--- ok, add proper info		Element info = node.getChild("info");		Element res  = new Element("result");		add(res, "total",        result.totalMetadata);		add(res, "added",        result.addedMetadata);		add(res, "updated",      result.updatedMetadata);		add(res, "unchanged",    result.unchangedMetadata);		add(res, "unknownSchema",result.unknownSchema);		add(res, "removed",      result.locallyRemoved);		add(res, "unretrievable",result.unretrievable);		info.addContent(res);	}	//---------------------------------------------------------------------------	//---	//--- Harvest	//---	//---------------------------------------------------------------------------	protected void doHarvest(Logger log, ResourceManager rm) throws Exception	{		Dbms dbms = (Dbms) rm.open(Geonet.Res.MAIN_DB);		Harvester h = new Harvester(log, context, dbms, params);		result = h.harvest();	}	//---------------------------------------------------------------------------	//---	//--- Variables	//---	//---------------------------------------------------------------------------	private CswParams params;	private CswResult result;}//=============================================================================class CswResult{	public int totalMetadata;	public int addedMetadata;	public int updatedMetadata;	public int unchangedMetadata;	public int locallyRemoved;	public int unknownSchema;	public int unretrievable;}//=============================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -