本文整理汇总了Python中com.googlecode.fascinator.common.FascinatorHome.getPath方法的典型用法代码示例。如果您正苦于以下问题:Python FascinatorHome.getPath方法的具体用法?Python FascinatorHome.getPath怎么用?Python FascinatorHome.getPath使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.googlecode.fascinator.common.FascinatorHome
的用法示例。
在下文中一共展示了FascinatorHome.getPath方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __activate__
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __activate__(self, context):
self.log = context["log"]
self.config = context["systemConfig"]
response = context["response"]
try:
## Variable prep
defaultPath = FascinatorHome.getPath("alerts")
self.alertsPath = self.config.getString(defaultPath, ["alerts", "path"])
self.configFile = None # We'll allocate this later... if needed
self.redboxVersion = self.config.getString("", "redbox.version.string")
self.csvDialect = csv.excel
self.csvDialect.skipinitialspace = True
## XML Parsing
docFactory = DocumentFactory()
##docFactory.setXPathNamespaceURIs(namespaces)
self.saxReader = SAXReader(docFactory)
## Do our job
(success, failed) = self.__processDir()
## Send response to the client (if debugging in browser)
writer = response.getPrintWriter("text/plain; charset=UTF-8")
writer.println("%s successful, %s failed" % (success, failed))
writer.close()
except Exception,e:
response.setStatus(500)
writer = response.getPrintWriter("text/plain; charset=UTF-8")
writer.println("Unexpected error during script execution:\n%s" % str(e))
writer.close()
示例2: storeToken
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def storeToken(self, tokenObject):
self.resetErrors()
index = "resumptionTokens-STORE"
table = "resumptionTokens"
fields = {
"token": tokenObject.getToken(),
"metadataPrefix": tokenObject.getMetadataPrefix(),
"expiry": Timestamp(tokenObject.getExpiry()),
"nextToken": tokenObject.getNextToken(),
"resultJson": ""
}
FileUtils.writeStringToFile(File(FascinatorHome.getPath("oaipmh-results")+ "/"+tokenObject.getToken()),tokenObject.getResultJson())
#self.log.debug("=== storeToken()")
#self.log.debug("=== TOKEN: '{}'", tokenObject.getToken())
#self.log.debug("=== METADATAPREFIX: '{}'", tokenObject.getMetadataPrefix())
#self.log.debug("=== EXPIRY: '{}'", tokenObject.getExpiry())
#self.log.debug("=== TOTALFOUND: '{}'", tokenObject.getTotalFound())
#self.log.debug("=== START: '{}'", tokenObject.getStart())
try:
self.db.insert(self.dbName, index, table, fields)
except Exception, e:
msg = self.parseError(e)
if msg == "Duplicate record!":
# Expected failure
self.log.error("Duplicate record already exists in table!")
else:
# Something is wrong
self.log.error("ERROR: ", e)
self.error = True
self.errorMsg = msg
示例3: __activate__
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __activate__(self, context):
self.None = context["log"]
self.systemConfig = context["systemConfig"]
self.sessionState = context["sessionState"]
self.response = context["response"]
self.request = context["request"]
self.services = context["Services"]
self.sessionState.set("username", "admin")
self.writer = self.response.getPrintWriter("text/plain; charset=UTF-8")
curationJobDao = ApplicationContextProvider.getApplicationContext().getBean("curationJobDao")
publicationHandler = ApplicationContextProvider.getApplicationContext().getBean("publicationHandler")
jobs = JsonSimple(File(FascinatorHome.getPath() + "/curation-status-responses/inProgressJobs.json")).getArray("inProgressJobs")
self.writer.println(jobs.size())
for curationJob in jobs:
curationJob
jobStatus = self.queryJobStatus(curationJob)
self.writer.println(jobStatus.toString())
status = jobStatus.getString("failed", "status")
self.writeResponseToStatusResponseCache(jobStatus.getInteger(None, "job_id"), jobStatus)
self.writer.println(status)
if "complete" == status:
publicationHandler.publishRecords(jobStatus.getArray("job_items"))
self.updateLocalRecordRelations(jobStatus.getArray("job_items"))
self.writer.close()
self.sessionState.remove("username")
示例4: __activate__
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __activate__(self, context):
self.log = context["log"]
config = context["systemConfig"]
response = context["response"]
## Variable prep
self.redboxVersion = self.config.getString("", "redbox.version.string")
self.defaultPath = FascinatorHome.getPath("alerts")
## This is the older-style config that allowed 1 folder for alert
alertsPath = self.config.getString(None, ["alerts", "path"])
if alertsPath is None:
## The newer config allows for alerts to come from several folders
self.alertSet = self.config.getJsonSimpleList(defaultPath, ["alerts", "alert-set"])
for alertItem in self.alertSet:
self.log.info("Processing alert: {}. Log file: {}", alertItem["name"], )
try:
alert = Alert(redboxVersion, alertItem)
alert.processAlert()
except Exception as e:
#The Alert class will log this for us so continue to the next alert
#Some exceptions stop an alert from running at all so log them just in case
self.log.error("Alert [{}] encountered problems - please review the log files in the associated .processed directory. Exception was: {}", alertItem["name"], e.message)
else:
try:
alertItem = self.__prepareAlertFromOldConfig(alertsPath)
alert = Alert(redboxVersion, alertItem)
alert.processAlert()
except Exception as e:
#The Alert class will log this for us
pass
return
示例5: processdocx
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def processdocx(self, inputfilepath):
"""
Convert a docx to html format, and calling
"""
zipFile = ZipFile(inputfilepath)
entry = zipFile.getEntry("word/document.xml")
stream = zipFile.getInputStream(entry)
text = StreamSource(stream)
factory = TransformerFactoryImpl()
xslt = StreamSource(File(join(FascinatorHome.getPath(), "lib", "xslt", "docx2html.xsl")))
transformer = factory.newTransformer(xslt)
tf = "/tmp/%s.html" % uuid.uuid4()
transformer.transform(text, StreamResult(File(tf)))
parser = DocxHtmlParser()
parser.init()
f = open(tf, "r")
parser.feed(unescape(f.read()))
f.close()
try:
remove(tf)
except Exception, e:
self.log.error("Failed to remove uploaded word file: %s." % tf)
self.log.error(str(e))
示例6: __activate__
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __activate__(self, context):
self.log = context["log"]
self.request = context["request"]
self.sessionState = context["sessionState"]
self.sessionState.set("username","admin")
processingSet = self.request.getParameter("processingSet")
self.procMsg = None
# read configuration and trigger processing stream sets
# storing the return object on the map
configFilePath = FascinatorHome.getPath("process")+"/processConfig.json"
procConfigFile = File(configFilePath)
if procConfigFile.exists() == True:
self.dataMap = HashMap()
self.dataMap.put("indexer", context['Services'].getIndexer())
self.procConfigJson = JsonSimple(procConfigFile)
for configObj in self.procConfigJson.getJsonArray():
configJson = JsonSimple(configObj)
procId = configJson.getString("", "id")
if processingSet is not None:
if procId == processingSet:
self.execProcSet(procId, configJson)
else:
self.execProcSet(procId, configJson)
if self.procMsg is None:
self.procMsg = "Processing complete!"
else:
self.procMsg = "Configuration file does not exist: " + configFilePath
示例7: __activate__
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __activate__(self, context):
self.velocityContext = context
self.request = context["request"]
self.response = context["response"]
self.sessionState = context["sessionState"]
self.errorMsg = ""
action = self.request.getParameter("action")
homeConfigFilePath = FascinatorHome.getPath("process")+"/notification/homeInstitutions.json"
self.homeConfigFile = File(homeConfigFilePath)
if self.homeConfigFile.exists() == False:
self.errorMsg = "Configuration path does not exist: %s" % homeConfigFilePath
return
if action is None or action == "list":
self.listHomes()
else:
self.errorMsg = "Invalid action."
示例8: getToken
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def getToken(self, tokenId):
self.resetErrors()
index = "resumptionTokens-GET"
sql = """
SELECT *
FROM resumptionTokens
WHERE token = ?
"""
fields = [tokenId]
try:
result = self.db.select(self.dbName, index, sql, fields)
# Make sure we got a response
if result is None or result.isEmpty():
return None
# Create the new token to return
metadataPrefix = result.get(0).get("METADATAPREFIX")
expiryStr = result.get(0).get("EXPIRY")
# Jython does not support %f microseconds in time parsing, makes
# this more awkward then it should be in 2.6+ Python
# 1: split into basic time + micro seconds
(basicTime, mSecs) = expiryStr.strip().split(".")
# 2: Parse the basic time
expiryDt = datetime.strptime(basicTime, "%Y-%m-%d %H:%M:%S")
# 3: Convert into a 'epoch' long and then to a string (has an extra ".0" on the end)
epoch = "%s" % time.mktime(expiryDt.timetuple())
# 4: Remove the extraneous trailing zero and re-attach microseconds
expiry = "%s%s" % (epoch.replace(".0", ""), mSecs)
nextToken = result.get(0).get("NEXTTOKEN")
file = File(FascinatorHome.getPath("oaipmh-results")+ "/"+tokenId)
resultJson = FileUtils.readFileToString(file)
FileUtils.deleteQuietly(file)
token = ResumptionToken(tokenId, metadataPrefix,nextToken,resultJson)
token.setExpiry(expiry)
return token
except Exception, e:
# Something is wrong
self.log.error("ERROR: ", e)
self.error = True
self.errorMsg = self.parseError(e)
return None
示例9: removeToken
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def removeToken(self, tokenObject):
self.resetErrors()
index = "resumptionTokens-DELETE"
table = "resumptionTokens"
fields = {
"token": tokenObject.getToken()
}
try:
self.db.delete(self.dbName, index, table, fields)
file = File(FascinatorHome.getPath("oaipmh-results")+ "/"+tokenObject.getToken())
FileUtils.deleteQuietly(file)
self.log.info("Delete successful! TOKEN='{}'", tokenObject.getToken())
return True
except Exception, e:
# Something is wrong
self.log.error("Delete failed! TOKEN='{}'", tokenObject.getToken())
self.log.error("ERROR: ", e)
self.error = True
self.errorMsg = self.parseError(e)
return False
示例10: writeResponseToStatusResponseCache
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def writeResponseToStatusResponseCache(self, jobId, jobStatus):
curationStatusRespones = File(FascinatorHome.getPath()+ "/curation-status-responses")
if curationStatusRespones.exists():
FileUtils.forceMkdir(curationStatusRespones)
FileUtils.writeStringToFile(File(curationStatusRespones.getPath()+ "/" + Integer(jobId).toString() + ".json"), jobStatus.toString(True))
示例11: __metadata
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __metadata(self):
self.title = None
self.dcType = None
self.__checkMetadataPayload()
jsonPayload = self.object.getPayload("metadata.json")
json = self.utils.getJsonObject(jsonPayload.open())
jsonPayload.close()
metadata = json.getObject("metadata")
identifier = metadata.get("dc.identifier")
self.utils.add(self.index, "dc:identifier", identifier)
self.__storeIdentifier(identifier)
self.utils.add(self.index, "institution", "James Cook University")
self.utils.add(self.index, "source", "http://spatialecology.jcu.edu.au/Edgar/")
data = json.getObject("data")
####Global setting for processing data
####These will need to be changed based on you system installation.
theMintHost = java.lang.System.getProperty("mint.proxy.url")
collectionRelationTypesFilePath = FascinatorHome.getPath() + "/../portal/default/redbox/workflows/forms/data/"
servicesRelationTypesFilePath = FascinatorHome.getPath() + "/../portal/default/redbox/workflows/forms/data/"
descriptionTypesFilePath = FascinatorHome.getPath() + "/../portal/default/local/workflows/forms/data/"
relationshipTypesFilePath = FascinatorHome.getPath() + "/../portal/default/local/workflows/forms/data/"
###Allocating space to create the formData.tfpackage
tfpackageData = {}
# We will do string substitutions on data that we get from the default json.
# We always replace ${NAME_OF_FOLDER} with the name of the folder; if the
# override json contains a key "DATA_SUBSTITUTIONS", then we also substitute
# stuff we find there.
# so: start with just wanting ${NAME_OF_FOLDER} replaced with the actual directory name
dirName = data.get("harvest_dir_name")
replacements = { 'NAME_OF_FOLDER': dirName }
# is there a DATA_SUBSTITUTIONS key? If so, add those in.
additionalReplacements = data.get("DATA_SUBSTITUTIONS")
if additionalReplacements:
replacements.update(additionalReplacements)
# now there's a replacements dictionary with the replacements we want
# to do on our incoming JSON strings.
# FANCY PART---------------------------------------------
# Now it gets a bit fancy: Here's a method that does a
# get-and-replace all in one go. That makes the rest of
# this __metdata() method much simpler and more readable.
#
# Because this method is defined inside this __metadata()
# method, it already knows about the replacements var we
# just made.
# dataBucket is the thing that has the data. key is the
# name of the field you want to get.
def getAndReplace(dataBucket, key):
temp = dataBucket.get(key) # fetch the value
if isinstance(key, str): # if it's a string, do our replacements
return Template(temp).safe_substitute(replacements)
else: # not a string, then just hand it back
return temp
# END OF FANCY PART -------------------------------------
title = getAndReplace(data, "title")
self.utils.add(self.index, "dc_title", title)
tfpackageData["dc:title"] = title
tfpackageData["title"] = title
self.utils.add(self.index, "dc_type", data.get("type"))
tfpackageData["dc:type.rdf:PlainLiteral"] = data.get("type")
tfpackageData["dc:type.skos:prefLabel"] = data.get("type")
tfpackageData["dc:created"] = time.strftime("%Y-%m-%d", time.gmtime())
tfpackageData["dc:modified"] = ""
tfpackageData["dc:language.skos:prefLabel"] = "English"
tfpackageData["dc:coverage.vivo:DateTimeInterval.vivo:start"] = data.get("temporalCoverage").get("dateFrom")
dateTo = data.get("temporalCoverage").get("dateTo")
if dateTo is not None:
tfpackageData["dc:coverage.vivo:DateTimeInterval.vivo:end"] = dateTo
tfpackageData["dc:coverage.redbox:timePeriod"] = ""
###Processing the 'spatialCoverage' metadata.
spatialCoverage = data.get("spatialCoverage")
for i in range(len(spatialCoverage)):
location = spatialCoverage[i]
if location["type"] == "text":
tfpackageData["dc:coverage.vivo:GeographicLocation." + str(i + 1) + ".dc:type"] = location["type"]
location_value = getAndReplace(location, "value")
if location_value.startswith("POLYGON"):
tfpackageData["dc:coverage.vivo:GeographicLocation." + str(i + 1) + ".redbox:wktRaw"] = location_value
tfpackageData["dc:coverage.vivo:GeographicLocation." + str(i + 1) + ".rdf:PlainLiteral"] = location_value
###Processing the 'description' metadata.
#Reading the file here, so we only do it once.
file = open(descriptionTypesFilePath + "descriptionTypes.json")
#.........这里部分代码省略.........
示例12: RecordsData
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
# 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
from com.googlecode.fascinator.common import FascinatorHome
import sys, os
sys.path.append(os.path.join(FascinatorHome.getPath(), "lib", "jython", "display"))
from Dashboard import Dashboard
class RecordsData(Dashboard):
"""
Used in AJAX call to get paged search results of ARMS records
It returns results of predefined types of search:
submitted, shared and etc. Default: requestor
"""
def __init__(self):
pass
def __activate__(self, context):
self.activate(context, context["page"].getPortal().recordsPerPage)
示例13: IndexData
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
import sys
import os
from com.googlecode.fascinator.common import FascinatorHome
sys.path.append(os.path.join(FascinatorHome.getPath(),"harvest", "workflows"))
from baserules import BaseIndexData
class IndexData(BaseIndexData):
def __activate__(self, context):
BaseIndexData.__activate__(self,context)
示例14: __activate__
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
import sys
import os
import traceback
from com.googlecode.fascinator.common import FascinatorHome
sys.path.append(os.path.join(FascinatorHome.getPath(),"lib", "jython", "alertlib"))
from NewAlerts import NewAlerts
"""
Handy info:
- This script is usually launched by Housekeeping
- com.googlecode.fascinator.portal.quartz.ExternalJob calls this script via HTTP
"""
class NewalertsData:
def __activate__(self, context):
response = context["response"]
log = context["log"]
writer = response.getPrintWriter("text/plain; charset=UTF-8")
try:
writer.println("Alert script has been started")
alerts = NewAlerts()
alerts.run(context)
writer.println("Alert script has completed")
except Exception, e:
writer.println("The alert system had a problem - check logs")
log.error("Exception in alerts code: %s" % (e.message))
raise
finally:
示例15: __metadata
# 需要导入模块: from com.googlecode.fascinator.common import FascinatorHome [as 别名]
# 或者: from com.googlecode.fascinator.common.FascinatorHome import getPath [as 别名]
def __metadata(self):
self.title = None
self.dcType = None
self.__checkMetadataPayload()
jsonPayload = self.object.getPayload("metadata.json")
json = self.utils.getJsonObject(jsonPayload.open())
jsonPayload.close()
metadata = json.getObject("metadata")
identifier = metadata.get("dc.identifier")
self.utils.add(self.index, "dc:identifier", identifier)
self.__storeIdentifier(identifier)
self.utils.add(self.index, "institution", "James Cook University")
self.utils.add(self.index, "source", "http://spatialecology.jcu.edu.au/Edgar/")
data = json.getObject("data")
####Global setting for processing data
####These will need to be changed based on you system installation.
theMintHost = java.lang.System.getProperty("mint.proxy.url")
collectionRelationTypesFilePath = FascinatorHome.getPath() + "/../portal/default/redbox/workflows/forms/data/"
servicesRelationTypesFilePath = FascinatorHome.getPath() + "/../portal/default/redbox/workflows/forms/data/"
descriptionTypesFilePath = FascinatorHome.getPath() + "/../portal/default/local/workflows/forms/data/"
relationshipTypesFilePath = FascinatorHome.getPath() + "/../portal/default/local/workflows/forms/data/"
###Allocating space to create the formData.tfpackage
tfpackageData = {}
###Using the species name, obtained from the directory name, to replace the text in the Title
species = data.get("species")
title = data.get("title")
title = title.replace("%NAME_OF_FOLDER%", species)
self.utils.add(self.index, "dc_title", title)
tfpackageData["dc:title"] = title
tfpackageData["title"] = title
self.utils.add(self.index, "dc_type", data.get("type"))
tfpackageData["dc:type.rdf:PlainLiteral"] = data.get("type")
tfpackageData["dc:type.skos:prefLabel"] = data.get("type")
tfpackageData["dc:created"] = time.strftime("%Y-%m-%d", time.gmtime())
tfpackageData["dc:modified"] = ""
tfpackageData["dc:language.skos:prefLabel"] = "English"
tfpackageData["dc:coverage.vivo:DateTimeInterval.vivo:start"] = data.get("temporalCoverage").get("dateFrom")
dateTo = data.get("temporalCoverage").get("dateTo")
if dateTo is not None:
tfpackageData["dc:coverage.vivo:DateTimeInterval.vivo:end"] = dateTo
tfpackageData["dc:coverage.redbox:timePeriod"] = ""
###Processing the 'spatialCoverage' metadata.
spatialCoverage = data.get("spatialCoverage")
for i in range(len(spatialCoverage)):
location = spatialCoverage[i]
if location["type"] == "text":
tfpackageData["dc:coverage.vivo:GeographicLocation." + str(i + 1) + ".dc:type"] = location["type"]
if (location["value"].startswith("POLYGON")):
tfpackageData["dc:coverage.vivo:GeographicLocation." + str(i + 1) + ".redbox:wktRaw"] = location["value"]
tfpackageData["dc:coverage.vivo:GeographicLocation." + str(i + 1) + ".rdf:PlainLiteral"] = location["value"]
###Processing the 'description' metadata.
#Reading the file here, so we only do it once.
file = open(descriptionTypesFilePath + "descriptionTypes.json")
descriptionData = file.read()
file.close()
description = data.get("description")
for i in range(len(description)):
desc = description[i]
tempDesc = desc.get("value")
tempDesc = tempDesc.replace("%NAME_OF_FOLDER%", species)
if (desc["type"] == "brief"):
tfpackageData["dc:description"] = tempDesc
tfpackageData["rif:description." + str(i + 1) + ".type"] = desc["type"]
tfpackageData["rif:description." + str(i + 1) + ".value"] = tempDesc
jsonSimple = JsonSimple(descriptionData)
jsonObj = jsonSimple.getJsonObject()
results = jsonObj.get("results")
#ensuring the Description Type exist
if results:
for j in range(len(results)):
descriptionType = results[j]
if (desc["type"] == descriptionType.get("id")):
tfpackageData["rif:description." + str(i + 1) + ".label"] = descriptionType.get("label")
###Processing the 'relatedPublication' metadata
relatedPublication = data.get("relatedPublication")
if relatedPublication is not None:
for i in range(len(relatedPublication)):
publication = relatedPublication[i]
tfpackageData["dc:relation.swrc:Publication." + str(i + 1) + ".dc:identifier"] = publication["doi"]
tfpackageData["dc:relation.swrc:Publication." + str(i + 1) + ".dc:title"] = publication["title"]
###Processing the 'relatedWebsite' metadata
relatedWebsite = data.get("relatedWebsite")
count = 0
for i in range(len(relatedWebsite)):
website = relatedWebsite[i]
#.........这里部分代码省略.........