-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathGetInfo.py
85 lines (67 loc) · 2.49 KB
/
GetInfo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import os
import imp
import jpype
import socket
import threading
#import json
socket.setdefaulttimeout(15)
class GetInfoForEvt(object):
_required_jars = {
'STFnlp.jar'
}
def __init__(self, jars=[], jvm_started=False, mark_time_ranges=False, include_range=False):
"""Initializes GetTimeForEvt.
"""
self.mark_time_ranges = mark_time_ranges
self.include_range = include_range
self.jars = jars
self._is_loaded = False
self._lock = threading.Lock()
if not jvm_started:
self._classpath = self._create_classpath()
self._start_jvm()
try:
# make it thread-safe
if threading.activeCount() > 1:
if jpype.isThreadAttachedToJVM() is not 1:
jpype.attachThreadToJVM()
self._lock.acquire()
EvtInfoWrapper = jpype.JClass('STFnlp.getEvtInfo')
#self._sutime = EvtTimeWrapper(self.mark_time_ranges, self.include_range)
self._getinfo = EvtInfoWrapper()
self._is_loaded = True
finally:
self._lock.release()
def _start_jvm(self):
if jpype.isJVMStarted() is not 1:
jpype.startJVM(
jpype.getDefaultJVMPath(),
'-Djava.class.path={classpath}'.format(
classpath=self._classpath)
)
def _create_classpath(self):
sutime_jar = os.getcwd() + '\\jars'
jars = [sutime_jar]
jar_file_names = []
for top, dirs, files in os.walk(self.jars):
for file_name in files:
if file_name.endswith('.jar'):
jars.append(os.path.join(top, file_name))
jar_file_names.append(file_name)
if not GetInfoForEvt._required_jars.issubset(jar_file_names):
raise RuntimeError('Not all necessary Java dependencies have been downloaded!')
return os.pathsep.join(jars)
def time_parse(self, input_str):
if self._is_loaded is False:
raise RuntimeError('Please load GetInfo model first!')
if input_str:
return self._getinfo.getEvtTime(input_str)
else:
return ""
def loca_parse(self, input_str,func_flag=None):
if self._is_loaded is False:
raise RuntimeError('Please load GetInfo model first!')
if input_str and func_flag:
return self._getinfo.getLocation(input_str, func_flag)
else:
return ""