\r
import java.nio.file.Files;\r
import java.nio.file.Paths;\r
-import java.util.LinkedHashSet;\r
import java.util.List;\r
\r
import org.junit.BeforeClass;\r
\r
@Test\r
public void createMigrateReport() throws Exception {\r
- LinkedHashSet<Object> success = new LinkedHashSet<>();\r
- List<String> migrated = Files.readAllLines(Paths.get("/opt/MV-migrate-status/migrated.txt"));\r
+ List<String> migrated = Files.readAllLines(Paths.get("/opt/MV-migrate-status/select_distinct_houseid__from_MEDIAFILE.csv"));\r
System.out.println("Starting");\r
- for (String m : migrated) {\r
- String name = m.trim();\r
- int indexOf = name.indexOf("-");\r
- if (indexOf > -1) {\r
- name = name.substring(9);\r
- if (success.contains(name))\r
- System.out.println("Error " + m.trim());\r
- else\r
- success.add(name);\r
- }\r
- // System.out.println(name);\r
- }\r
+ //Files.write(Paths.get("/opt/MV-migrate-status/migrated-clean.txt"), success);\r
+\r
+ StringBuilder sb = new StringBuilder();\r
\r
List<String> tomigrate = Files.readAllLines(Paths.get("/opt/MV-migrate-status/to-migrate.txt"));\r
int nosuccesscount = 0;\r
for (String t : tomigrate) {\r
String name = t.trim();\r
name = name.substring(2);\r
- int indexOf = name.indexOf(".");\r
- if (indexOf > -1) {\r
- indexOf = name.lastIndexOf("/");\r
- name = name.substring(indexOf + 1);\r
- if (!success.contains(name)) {\r
- System.out.println(name);\r
- nosuccesscount++;\r
- }\r
+ int indexOf = name.lastIndexOf("/");\r
+ name = name.substring(indexOf + 1);\r
+ if (!migrated.contains(name)) {\r
+ sb.append("Missing " + name + "\r\n");\r
+ nosuccesscount++;\r
}\r
}\r
\r
+ Files.write(Paths.get("/opt/MV-migrate-status/report.txt"), sb.toString().getBytes());\r
System.out.println("Success " + migrated.size());\r
System.out.println("No success " + nosuccesscount);\r
- System.out.println(100 - (nosuccesscount * 100 / migrated.size()));\r
-\r
+ System.out.println((float) nosuccesscount * 100 / migrated.size() + "% missing");\r
}\r
\r
private HSMMigrateStep createSUT() {\r
import java.util.Collection;\r
import java.util.Collections;\r
import java.util.Date;\r
+import java.util.HashMap;\r
import java.util.List;\r
+import java.util.Map;\r
import java.util.Set;\r
import java.util.TreeMap;\r
import java.util.TreeSet;\r
\r
import org.apache.commons.io.FilenameUtils;\r
+import org.apache.commons.lang.StringUtils;\r
import org.junit.Test;\r
\r
import user.jobengine.db.Media;\r
String mexio = "2020-09-03T17:52:59.098+0200";\r
System.out.println(mc.compareTo(mexio));\r
}\r
+\r
+ @Test\r
+ public void test94() throws Exception {\r
+ List<String> uploads = Files.readAllLines(Paths.get("/opt/AMC/upload-errors.csv"));\r
+ //List<String> downloads = Files.readAllLines(Paths.get("/opt/AMC/download-errors.csv"));\r
+\r
+ Map<String, String> ups = new HashMap<>();\r
+\r
+ boolean first = true;\r
+ for (String upload : uploads) {\r
+ if (first) {\r
+ first = false;\r
+ continue;\r
+ }\r
+ String[] upfields = upload.split(";");\r
+ String related = upfields[3];\r
+\r
+ String content = ups.get(related);\r
+\r
+ if (upload.contains("FINISHED") && upload.contains("NEXIO"))\r
+ continue;\r
+\r
+ if (content == null)\r
+ content = upload + "\r\n";\r
+ else\r
+ content += upload + "\r\n";\r
+\r
+ ups.put(related, content);\r
+ }\r
+\r
+ System.out.println("Start");\r
+ int countTouched = 0;\r
+ int countMultiTouched = 0;\r
+ for (String related : ups.keySet()) {\r
+ String content = ups.get(related);\r
+ int countMatches = StringUtils.countMatches(content, "EXECUTING");\r
+ if (countMatches == 0)\r
+ continue;\r
+\r
+ countMatches = StringUtils.countMatches(content, "NEXIO");\r
+ if (countMatches == 0)\r
+ continue;\r
+\r
+ countMatches = StringUtils.countMatches(content, "MEDIACUBE_UPLOADS ->");\r
+ if (countMatches == 0)\r
+ continue;\r
+\r
+ System.out.println(">>>" + related);\r
+ countTouched++;\r
+ System.out.println(content);\r
+ System.out.println("...");\r
+\r
+ // if (countMatches > 1) {\r
+ // countMultiTouched++;\r
+ // }\r
+\r
+ }\r
+ System.out.println(countTouched);\r
+ // System.out.println(countMultiTouched);\r
+ }\r
+\r
+ @Test\r
+ public void test95() throws Exception {\r
+ DirectoryStream<Path> directoryStream = null;\r
+\r
+ List<Path> escortFiles = new ArrayList<>();\r
+ directoryStream = Files.newDirectoryStream(Paths.get("/_video"));\r
+ for (Path escortFile : directoryStream) {\r
+ if (escortFile.toFile().isDirectory())\r
+ continue;\r
+ escortFiles.add(escortFile);\r
+ }\r
+ escortFiles.sort((p1, p2) -> {\r
+ return Long.valueOf(p1.toFile().lastModified()).compareTo(p2.toFile().lastModified());\r
+ });\r
+\r
+ for (Path p : escortFiles) {\r
+ System.out.println(p.getFileName());\r
+ }\r
+ }\r
}\r
// getJobRuntime().setDescription(String.valueOf(param));\r
\r
try {\r
+ //getJobRuntime().setRelated("xxx");\r
//logger.info(new MediaCubeMarker("vasary@elgekko.net", "TESZT"), "Heloka");\r
- logger.error(getSessionMarker(), "Heloka");\r
+ //logger.error(getSessionMarker(), "Heloka");\r
for (int i = 0; i < count; i++) {\r
if (getJobRuntime().isWaitingCancel())\r
break;\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import user.commons.StoreUri;\r
+\r
+public class FILEZILLA_PASARESTORETransferToStep extends TransferStep {\r
+ @Override\r
+ @StepEntry\r
+ public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
+ }\r
+}\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
+import java.util.Set;\r
\r
import org.apache.logging.log4j.LogManager;\r
import org.apache.logging.log4j.Logger;\r
\r
import user.commons.DownloadableMedia;\r
import user.commons.JobStatus;\r
+import user.commons.MediaCubeMarker;\r
import user.commons.StoreUri;\r
import user.commons.remotestore.RemoteStoreProtocol;\r
+import user.jobengine.db.Store;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
\r
@StepEntry\r
public Object[] execute(String tempStoreName, String template, String expectedColorSpace, int limit) throws Exception {\r
+\r
+ sendStatusReport();\r
+\r
DirectoryStream<Path> directoryStream = null;\r
int count = limit;\r
int allCount = 0;\r
escortFiles.add(escortFile);\r
}\r
allCount = escortFiles.size();\r
- //Comparison method violates its general contract! miatt try-catch\r
escortFiles.sort((p1, p2) -> {\r
- int result = 0;\r
- try {\r
- result = p1.toFile().lastModified() > p2.toFile().lastModified() ? 1 : -1;\r
- } catch (Exception e) {\r
- }\r
- return result;\r
+ return Long.valueOf(p1.toFile().lastModified()).compareTo(p2.toFile().lastModified());\r
});\r
\r
if (allCount > 0) {\r
if (EscortFiles.isCatchedFileExists(escortFile))\r
return false;\r
\r
- String fileName = escortFile.getFileName().toString();\r
+ String escortFileName = escortFile.getFileName().toString();\r
//minimum 3 karakter: STORENAME.FILENAME.MXF.JSON\r
- long dotCount = fileName.chars().filter(ch -> ch == '.').count();\r
+ long dotCount = escortFileName.chars().filter(ch -> ch == '.').count();\r
if (dotCount < 3)\r
return false;\r
\r
return false;\r
}\r
\r
- logger.info(getMarker(), "Starting {} for {}", template, fileName);\r
-\r
StoreUri sourceStoreUri = getManager().getStoreUri(downloadable.getLong("sourceStoreUriId"));\r
StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId"));\r
+\r
+ Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
+ template = targetStore.getName() + "-" + template;\r
+ logger.info(getMarker(), "Starting {} for {}", template, escortFileName);\r
+\r
+ String sourceFileName = downloadable.getString("fileName");\r
Map<String, Object> parameters = new HashMap<>();\r
parameters.put("sourceStoreUri", sourceStoreUri);\r
- parameters.put("fileName", downloadable.getString("fileName"));\r
+ parameters.put("fileName", sourceFileName);\r
parameters.put("tempStoreUri", tempStoreUri);\r
parameters.put("targetStoreUri", targetStoreUri);\r
parameters.put("expectedFrameNumber", downloadable.getLong("frames"));\r
parameters.put("expectedColorSpace", downloadable.getString("colorSpace"));\r
parameters.put("escortFile", escortFile.toAbsolutePath().toString());\r
\r
- //IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
+ int priority = 50;\r
+\r
+ //megszakitasok miatt a mar lejott mozikat vegyuk elore 20.09.09\r
+ if (targetExists(tempStoreUri, sourceFileName))\r
+ priority = 51;\r
+\r
+ //parameterek: IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
IJobRuntime child = getEngine().submit(null, e -> {\r
if (e.getStatus().equals(JobStatus.CANCELED))\r
EscortFiles.removeCatchedFile(escortFile);\r
- }, template, "Archiválás", 0, IJobEngine.DEFAULT_OWNER, parameters);\r
+ }, template, "Archiválás", priority, IJobEngine.DEFAULT_OWNER, parameters);\r
if (child == null)\r
throw new Exception("Submit error.");\r
\r
- child.setDescription(fileName);\r
+ child.setDescription(sourceFileName);\r
child.setRelated(downloadable.getString("title"));\r
EscortFiles.createCatchedFile(escortFile);\r
\r
\r
return true;\r
}\r
+\r
+ private void sendStatusReport() {\r
+ IJobEngine engine = getEngine();\r
+ int jobCount = 0;\r
+ StringBuilder sb = new StringBuilder();\r
+ Map<Long, IJobRuntime> jobs = engine.getJobs();\r
+ if (jobs != null) {\r
+ Set<Long> keys = jobs.keySet();\r
+ jobCount = keys.size();\r
+ for (Long key : keys) {\r
+ IJobRuntime runtime = jobs.get(key);\r
+ if (JobStatus.SUSPENDED.equals(runtime.getStatus()))\r
+ sb.append(runtime.getRelated() + " SUSPENDED: " + runtime.getDescription() + "</br>");\r
+ }\r
+ }\r
+ MediaCubeMarker marker = new MediaCubeMarker();\r
+ marker.setSubject("AMC MediaCube feldolgozási sor " + jobCount);\r
+ logger.info(marker, sb.toString());\r
+ }\r
+\r
+ private boolean targetExists(StoreUri storeUri, String fileName) {\r
+ try {\r
+ Path targetFile = Paths.get(storeUri.toString(true), fileName);\r
+ if (targetFile.toFile().exists()) {\r
+ logger.info(getMarker(), "Retrieved file {} exists", fileName);\r
+ return true;\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), e.getMessage());\r
+ }\r
+ logger.info(getMarker(), "Retrieved file {} not exists yet", fileName);\r
+ return false;\r
+ }\r
}\r
import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.Media;\r
import user.jobengine.db.MediaFile;\r
+import user.jobengine.db.Store;\r
import user.jobengine.server.IJobEngine;\r
import user.jobengine.server.IJobRuntime;\r
\r
}\r
allCount = escortFiles.size();\r
//a file neve az adasbakerules idopontjaval kezdodik\r
+ // escortFiles.sort((p1, p2) -> {\r
+ // return p1.compareTo(p2);\r
+ // });\r
+\r
+ //200911 megis inkabb a letrehozas idopontja legyen\r
escortFiles.sort((p1, p2) -> {\r
- return p1.compareTo(p2);\r
+ return Long.valueOf(p1.toFile().lastModified()).compareTo(p2.toFile().lastModified());\r
});\r
\r
if (allCount > 0) {\r
if (EscortFiles.isCatchedFileExists(escortFile))\r
return false;\r
\r
- String fileName = escortFile.getFileName().toString();\r
+ String escortFileName = escortFile.getFileName().toString();\r
//minimum 3 karakter: STORENAME.FILENAME.MXF.JSON\r
- long dotCount = fileName.chars().filter(ch -> ch == '.').count();\r
+ long dotCount = escortFileName.chars().filter(ch -> ch == '.').count();\r
if (dotCount < 3)\r
return false;\r
\r
DownloadableMedia downloadable = EscortFiles.decode(escortFile);\r
\r
if (downloadable == null) {\r
- logger.error(getSessionMarker(), "Can't encode {}", escortFile);\r
+ logger.error(getSessionMarker(), "Can't decode {}", escortFile);\r
return false;\r
}\r
- logger.info(getMarker(), "Starting {} for {}", template, fileName);\r
\r
StoreUri sourceStoreUri = getManager().getStoreUri("TSM", RemoteStoreProtocol.TSM);\r
StoreUri targetStoreUri = getManager().getStoreUri(downloadable.getLong("targetStoreUriId"));\r
\r
+ Store targetStore = getManager().getStore(targetStoreUri.getStoreId());\r
+ template = targetStore.getName() + "-" + template;\r
+ logger.info(getMarker(), "Starting {} for {}", template, escortFileName);\r
+\r
String tsmFileName = getTSMFileName(downloadable.getLong("mediaId"), sourceStoreUri);\r
+ String targetFileName = downloadable.getString("fileName");\r
\r
Map<String, Object> parameters = new HashMap<>();\r
parameters.put("sourceStoreUri", sourceStoreUri);\r
parameters.put("tsmFileName", tsmFileName);\r
- parameters.put("fileName", downloadable.getString("fileName"));\r
+ parameters.put("fileName", targetFileName);\r
parameters.put("tempStoreUri", tempStoreUri);\r
parameters.put("targetStoreUri", targetStoreUri);\r
parameters.put("expectedFrameNumber", downloadable.getLong("frames"));\r
parameters.put("expectedColorSpace", downloadable.getString("colorSpace"));\r
parameters.put("escortFile", escortFile.toAbsolutePath().toString());\r
\r
- int priority = downloadable.containsKey("priority") ? downloadable.getInt("priority") : 0;\r
- //IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
+ //int priority = downloadable.containsKey("priority") ? downloadable.getInt("priority") : 0;\r
+ //mindenki egyforman induljon 20.09.07\r
+ //a NEXIO egy kicsit fontosabb 20.09.08. megsem 20.09.09\r
+ //int priority = escortFile.toString().contains("NEXIO") ? 51 : 50;\r
+ //megszakitasok miatt a mar lejott mozikat vegyuk elore 20.09.09\r
+\r
+ int priority = 50;\r
+ if (targetExists(tempStoreUri, targetFileName))\r
+ priority = 51;\r
+\r
+ //parameterek: IJobRuntime parent, String template, String name, int priority, Map<String, Object> parameters\r
IJobRuntime child = getEngine().submit(null, e -> {\r
if (e.getStatus().equals(JobStatus.CANCELED) || e.getStatus().equals(JobStatus.SUSPENDED))\r
EscortFiles.removeCatchedFile(escortFile);\r
if (child == null)\r
throw new Exception("Submit error.");\r
\r
- child.setDescription(fileName);\r
+ child.setDescription(escortFileName);\r
\r
child.setRelated(downloadable.getString("title"));\r
EscortFiles.createCatchedFile(escortFile);\r
\r
return true;\r
}\r
+\r
+ private boolean targetExists(StoreUri storeUri, String fileName) {\r
+ try {\r
+ Path targetFile = Paths.get(storeUri.toString(true), fileName);\r
+ if (targetFile.toFile().exists()) {\r
+ logger.info(getMarker(), "Retrieved file {} exists", fileName);\r
+ return true;\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), e.getMessage());\r
+ }\r
+ logger.info(getMarker(), "Retrieved file {} not exists yet", fileName);\r
+ return false;\r
+ }\r
}\r
\r
IItemManager manager = getManager();\r
\r
+ if (mediaId == 0) {\r
+ mediaId = tryGetMediaId(title, mediaId);\r
+ }\r
+\r
//TODO ha van mediaId, akkor update!!!!!!!!!\r
\r
if (mediaId == 0) {\r
media.add();\r
mediaFile.setMediaId(media.getId());\r
mediaFile.setLastModified(modified);\r
+ //TODO\r
+ //mediaFile.setFileSize(fileSize);\r
mediaFile.add();\r
} else {\r
Media media = manager.getMedia(mediaId);\r
media.setCreated(created);\r
manager.modify(media);\r
MediaFile mediaFile = manager.getSystemMediaFile(media);\r
+ //TODO\r
+ //mediaFile.setFileSize(fileSize);\r
mediaFile.setLastModified(modified);\r
manager.modify(mediaFile);\r
}\r
return null;\r
}\r
\r
+ private long tryGetMediaId(String title, long mediaId) {\r
+ Media media = null;\r
+ //duplikatum miatt\r
+ try {\r
+ media = getManager().getMedia(title);\r
+ if (media != null)\r
+ mediaId = media.getId();\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), "Media with title {} is not available. System message is: {}", title, e.getMessage());\r
+ }\r
+ return mediaId;\r
+ }\r
+\r
}\r
return null;\r
}\r
String lookupStoreName = String.valueOf(lookup);\r
+\r
StoreUri lookupStoreUri = getManager().getStoreUri(lookupStoreName, RemoteStoreProtocol.LOCAL);\r
- List<String> lookupContent = getPoolContent(lookupStoreUri);\r
+ logger.info(getMarker(), "Checking pool {}", lookupStoreName);\r
+ List<String> lookupContent = getPoolContent(lookupStoreName, lookupStoreUri);\r
poolContent.addAll(lookupContent);\r
processed++;\r
progress = processed * 50 / count;\r
setProgress(progress);\r
}\r
+ /*\r
+ if (1 == 1) {\r
+\r
+ logger.info(getMarker(), "Kikapcsolva");\r
+ return null;\r
+ }\r
+ */\r
\r
PBQuery query = new PBQuery();\r
query.init(primaryEndPoint, primaryUserName, primaryPassword, secondaryEndPoint, secondaryUserName, secondaryPassword, rangeForwardHours);\r
\r
if (medias != null && medias.size() > 0) {\r
count = medias.size();\r
+\r
+ for (MMMedia media : medias) {\r
+ logger.info(getMarker(), "API response contains {}", media.getName());\r
+ }\r
+\r
for (MMMedia media : medias) {\r
if (getJobRuntime().isWaitingCancel()) {\r
cancel();\r
return null;\r
}\r
\r
- private List<String> getPoolContent(StoreUri targetStoreUri) throws Exception {\r
+ private List<String> getPoolContent(String storeName, StoreUri targetStoreUri) throws Exception {\r
List<String> poolContent = new ArrayList<>();\r
List<RemoteFile> remoteFiles = targetStoreUri.getRemoteFiles();\r
- if (remoteFiles != null)\r
- remoteFiles.forEach(i -> {\r
- String name = i.getName();\r
- poolContent.add(name.substring(0, name.lastIndexOf(".")));\r
- });\r
+ if (remoteFiles != null) {\r
+ for (RemoteFile rf : remoteFiles) {\r
+ try {\r
+ String name = rf.getName();\r
+ int pos = name.lastIndexOf(".");\r
+ if (pos > -1) {\r
+ name = name.substring(0, pos);\r
+ //logger.info(getMarker(), "Adding {}", name);\r
+ poolContent.add(name);\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(e.getMessage());\r
+ }\r
\r
- logger.info(getMarker(), "Pool contains {} items", poolContent == null ? 0 : poolContent.size());\r
+ }\r
+ }\r
+ logger.info(getMarker(), "Pool {} contains {} items", storeName, poolContent == null ? 0 : poolContent.size());\r
return poolContent;\r
}\r
\r
\r
private void processRecord(MMMedia mmedia, StoreUri sourceStoreUri, String targetStoreName, StoreUri targetStoreUri, StoreUri escortStoreUri) {\r
//TODO kisbetu/nagybetu problema kezelese\r
- Media media = getManager().getMedia(mmedia.getName());\r
+\r
+ Media media = null;\r
+ //duplikatum miatt\r
+ try {\r
+ media = getManager().getMedia(mmedia.getName());\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), "Can't identify missing material {}. System message is: {}", mmedia.getName(), e.getMessage());\r
+ return;\r
+ }\r
\r
String fileName = normalizeName(mmedia.getName());\r
\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import user.commons.StoreUri;\r
+\r
+public class TransferFromFTPStep extends TransferStep {\r
+ @Override\r
+ @StepEntry\r
+ public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
+ }\r
+}\r
package user.jobengine.server.steps;\r
\r
+import java.nio.file.Path;\r
+import java.nio.file.Paths;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+\r
import user.commons.StoreUri;\r
\r
public class TransferFromTSMStep extends TransferStep {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
@Override\r
@StepEntry\r
public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
- return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
- }\r
-\r
- @Override\r
- protected String getTmpExtension() {\r
- return null;\r
+ Object[] result = null;\r
+ try {\r
+ Path targetFile = Paths.get(targetStoreUri.toString(true), targetFileName);\r
+ if (targetFile.toFile().exists()) {\r
+ logger.info(getMarker(), "Using previously retrived file {}", targetFile);\r
+ } else {\r
+ result = super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
+ }\r
+ } catch (Exception e) {\r
+ logger.error(getMarker(), e.getMessage());\r
+ }\r
+ return result;\r
}\r
\r
}\r
--- /dev/null
+package user.jobengine.server.steps;\r
+\r
+import user.commons.StoreUri;\r
+\r
+public class TransferToFTPStep extends TransferStep {\r
+ @Override\r
+ @StepEntry\r
+ public Object[] execute(StoreUri sourceStoreUri, String sourceFileName, StoreUri targetStoreUri, String targetFileName) throws Exception {\r
+ return super.execute(sourceStoreUri, sourceFileName, targetStoreUri, targetFileName);\r
+ }\r
+}\r
if (outputLister != null)
outputLister.cleanUp();
} catch (Exception e) {
- logger.error("Additional error!", e);
+ logger.error("Error closing copy: {}", targetName);
+ throw e;
}
}
result.setSize(uploadedBytes);
+++ /dev/null
-package user.commons.pool.orig;\r
-\r
-import java.sql.Connection;\r
-import java.sql.DriverManager;\r
-import java.sql.SQLException;\r
-\r
-\r
-/**\r
- * <b>Adatbázis kapcsolat erõforrás kezelõ.</b>\r
- * \r
- */\r
-public class ConnectionPool extends ResourcePool {\r
- public ConnectionPool(ConnectionPoolProperties properties) {\r
- super(properties);\r
- }\r
- \r
- public Connection borrowObject() {\r
- return (Connection) super.borrowObject(); \r
- }\r
-\r
- protected boolean checkObject(Object resourceObject) {\r
- Connection connection = (Connection) resourceObject;\r
- boolean closed = false; \r
- try {\r
- closed = connection.isClosed();\r
- } catch (SQLException e) {\r
- }\r
- return closed; \r
- }\r
-\r
- protected Connection createObject() {\r
- ConnectionPoolProperties cpp = (ConnectionPoolProperties) this.getProperties();\r
- Connection connection = null;\r
- try {\r
- Class.forName(cpp.getDriverName());\r
- DriverManager.setLoginTimeout(cpp.getTimeout());\r
- connection = DriverManager.getConnection(cpp.getUrl(), cpp.getUserName(), cpp.getPassword());\r
- connection.setAutoCommit(cpp.getAutoCommit());\r
- } catch (Exception e) {\r
- throw new PoolException(e.getMessage());\r
- }\r
- return connection;\r
- }\r
-\r
- protected void releaseObject(Object resourceObject) {\r
- validateObject(resourceObject);\r
- Connection connection = (Connection) resourceObject;\r
- try {\r
- if (connection == null)\r
- return;\r
- if (connection.isClosed() == false) {\r
- connection.close();\r
- }\r
- connection = null;\r
- } catch (Exception e) {\r
- throw new PoolException(e.getMessage());\r
- }\r
- }\r
- \r
- public void lendObject(Connection connection) {\r
- super.lendObject(connection); \r
- }\r
-\r
- protected void validateObject(Object resourceObject) {\r
- super.validateObject(resourceObject);\r
- if (!(resourceObject instanceof Connection)) {\r
- throw new IllegalArgumentException("Only Connection class is acceptable.");\r
- }\r
- }\r
-}\r
+++ /dev/null
-package user.commons.pool.orig;\r
-\r
-import user.commons.CommonsProperties;\r
-\r
-public class ConnectionPoolProperties extends CommonsProperties {\r
- static public final String AUTOCOMMIT = "AutoCommit"; \r
- static public final String DRIVERNAME = "DriverName"; \r
- static public final String PASSWORD = "Password"; \r
- static public final String TIMEOUT = "Timeout"; \r
- static public final String URL = "ConnectionUrl"; \r
- static public final String USERNAME = "UserName"; \r
-\r
- public ConnectionPoolProperties(String driver, String url, String userName, String password, boolean autoCommit, int timeout) {\r
- CommonsProperties.checkParameter(DRIVERNAME, driver);\r
- CommonsProperties.checkParameter(URL, url);\r
- CommonsProperties.checkParameter(USERNAME, userName);\r
- CommonsProperties.checkParameter(PASSWORD, password);\r
- CommonsProperties.checkParameter(AUTOCOMMIT, autoCommit);\r
- CommonsProperties.checkParameter(TIMEOUT, timeout);\r
- super.add(DRIVERNAME, driver);\r
- super.add(URL, url);\r
- super.add(USERNAME, userName);\r
- super.add(PASSWORD, password);\r
- super.add(AUTOCOMMIT, autoCommit);\r
- super.add(TIMEOUT, timeout);\r
- }\r
- \r
- public boolean getAutoCommit(){\r
- return getBool(AUTOCOMMIT);\r
- }\r
- \r
- public String getDriverName(){\r
- return getString(DRIVERNAME);\r
- }\r
- \r
- public String getPassword(){\r
- return getString(PASSWORD);\r
- }\r
- \r
- public int getTimeout() {\r
- return getInt(TIMEOUT);\r
- }\r
-\r
- public String getUrl(){\r
- return getString(URL);\r
- }\r
-\r
- public String getUserName(){\r
- return getString(USERNAME);\r
- }\r
-}\r
+++ /dev/null
-package user.commons.pool.orig;\r
-\r
-\r
-/*\r
-import java.lang.reflect.InvocationTargetException;\r
-import java.sql.Connection;\r
-import java.sql.DriverManager;\r
-import java.sql.SQLException;\r
-\r
-import sqlj.runtime.ref.DefaultContext;\r
-*/\r
-/**\r
- * <b>Adatbázis kontextus erõforrás kezelõ.</b>\r
- * \r
- */\r
-public class ContextPool extends ResourcePool {\r
- public ContextPool(ConnectionPoolProperties properties) {\r
- super(properties);\r
- }\r
-/* \r
- public DefaultContext borrowObject() {\r
- DefaultContext context = (DefaultContext) super.borrowObject();\r
- DefaultContext.setDefaultContext(context);\r
- return context;\r
- }\r
-\r
- protected boolean checkObject(Object resourceObject) {\r
- DefaultContext context = (DefaultContext) resourceObject;\r
- return context.isClosed(); \r
- }\r
-\r
- protected DefaultContext createObject() {\r
- ConnectionPoolProperties cpp = (ConnectionPoolProperties) this.getProperties();\r
- Connection connection = null;\r
- DefaultContext context = null;\r
- try {\r
- Class.forName(cpp.getDriverName());\r
- } catch (ClassNotFoundException e) {\r
- throw new PoolException(e.getMessage());\r
- }\r
- \r
- try {\r
- DriverManager.setLoginTimeout(cpp.getTimeout());\r
- connection = DriverManager.getConnection(cpp.getUrl(), cpp.getUserName(), cpp.getPassword());\r
- connection.setAutoCommit(cpp.getAutoCommit());\r
- context = new DefaultContext(connection);\r
- } catch (SQLException e) {\r
- throw new PoolException(e.getMessage());\r
- } catch (RuntimeException e) {\r
- Throwable cause = e.getCause();\r
- if(cause instanceof InvocationTargetException) {\r
- Throwable targetException = ((InvocationTargetException)cause).getTargetException();\r
- targetException.printStackTrace();\r
- }\r
- }\r
- return context;\r
- }\r
-\r
- protected void releaseObject(Object value) {\r
- validateObject(value);\r
- DefaultContext context = (DefaultContext) value;\r
- try {\r
- if (context == null)\r
- return;\r
- if (context.isClosed() == false) {\r
- context.close();\r
- }\r
- context = null;\r
- } catch (Exception e) {\r
- throw new PoolException(e.getMessage());\r
- }\r
- }\r
- \r
- public void lendObject(DefaultContext context) {\r
- super.lendObject(context); \r
- }\r
-\r
- protected void validateObject(Object resourceObject) {\r
- super.validateObject(resourceObject);\r
- if (!(resourceObject instanceof DefaultContext)) {\r
- throw new IllegalArgumentException("Only DefaultContext class is acceptable.");\r
- }\r
- }\r
-*/\r
-\r
- @Override\r
- protected boolean checkObject(Object resourceObject) {\r
- // TODO Auto-generated method stub\r
- return false;\r
- }\r
-\r
- @Override\r
- protected Object createObject() {\r
- // TODO Auto-generated method stub\r
- return null;\r
- }\r
-\r
- @Override\r
- protected void releaseObject(Object resourceObject) {\r
- // TODO Auto-generated method stub\r
- \r
- }\r
-}\r
+++ /dev/null
-package user.commons.pool.orig;\r
-\r
-/**\r
- * Pool kivétel. \r
- */\r
-public class PoolException extends RuntimeException {\r
- private static final long serialVersionUID = 874798532700307318L;\r
-\r
- public PoolException(String message) {\r
- super(message);\r
- }\r
-}\r
+++ /dev/null
-package user.commons.pool.orig;\r
-\r
-import java.util.LinkedList;\r
-\r
-import org.apache.logging.log4j.LogManager;\r
-import org.apache.logging.log4j.Logger;\r
-\r
-import user.commons.CommonsProperties;\r
-\r
-/**\r
- * <b>Er�forr�s kezel�.</b>\r
- * <br>\r
- * Az implement�ci�ban meghat�rozott t�pus� er�forr�s objektumb�l \r
- * ig�ny szerint l�trehoz annyit, amennyi enged�lyezett.\r
- * <br>\r
- * Az er�forr�s objektumok k�lcs�n�zhet�ek, visszaadhat�ak \r
- * thread-safe m�don. \r
- * <br>\r
- * Mind�g a legr�gebben haszn�lt objektumot k�lcs�nzi ki.\r
- * <br>\r
- * Ha elfogy a k�lcs�n�zhet� objektum, v�rakoztat.\r
- */\r
-\r
-abstract public class ResourcePool {\r
- private static final Logger logger = LogManager.getLogger();\r
- static public final String POOLSIZE = "PoolSize";\r
- protected LinkedList<Object> pool = null;\r
- private CommonsProperties properties = null;\r
- private int resourceCounter = 0;\r
-\r
- /**\r
- * Konstruktor a pool l�trehoz�s�ra.\r
- * @param properties\r
- * Be�ll�t�sok.\r
- */\r
- protected ResourcePool(CommonsProperties properties) {\r
- if (properties == null)\r
- throw new NullPointerException("Pool property map cannot be null.");\r
- this.properties = properties;\r
- resourceCounter = this.properties.getInt(POOLSIZE);\r
- }\r
-\r
- /**\r
- * Er�forr�s objektum k�lcs�nz�se.\r
- * @return\r
- * Kik�lcs�nz�tt er�forr�s objektum. \r
- * Visszet�r�s el�tt a checkObject-el ellen�rzi, hogy haszn�lhat� e az objektum.\r
- * Ha nem �jat, hoz l�tre. \r
- */\r
- protected Object borrowObject() {\r
- if (pool == null)\r
- pool = new LinkedList<Object>();\r
-\r
- Object resourceObject = null;\r
-\r
- for (;;) {\r
- synchronized (this) {\r
- resourceObject = pool.poll();\r
- }\r
- if (resourceObject != null)\r
- break;\r
- if (resourceCounter > 0) {\r
- synchronized (this) {\r
- resourceObject = createObject();\r
- resourceCounter--;\r
- }\r
- break;\r
- }\r
-\r
- System.out.println("Waiting for resource.");\r
- try {\r
- Thread.sleep(1000);\r
- } catch (InterruptedException e) {\r
- }\r
- }\r
-\r
- if (resourceObject != null && checkObject(resourceObject) == true) {\r
- synchronized (this) {\r
- System.out.println("Resource not passed the check. Recreating.");\r
- if (pool.contains(resourceObject))\r
- pool.remove(resourceObject);\r
- resourceObject = createObject();\r
- }\r
- }\r
- logger.trace(String.format("Borrow, pool size: %1$d, counter: %2$d", pool.size(), resourceCounter));\r
- return resourceObject;\r
- }\r
-\r
- /**\r
- * Ellen�rzi, hogy haszn�lhat� e az objektum.\r
- * Implement�ci� f�gg�!\r
- * @param resourceObject\r
- * Ellen�rizend� objektum.\r
- * @return\r
- * <b>true</b> ha m�r nem haszn�lhat� \r
- */\r
- abstract protected boolean checkObject(Object resourceObject);\r
-\r
- /**\r
- * Az �sszes nem kik�lcs�nz�tt er�forr�s objektumot, \r
- * a releaseObject h�v�ssal felszabad�tja. \r
- */\r
- public void close() {\r
- if (pool == null)\r
- return;\r
- Object resourceObject = null;\r
- synchronized (this) {\r
- while ((resourceObject = pool.poll()) != null) {\r
- releaseObject(resourceObject);\r
- }\r
- }\r
- pool = null;\r
- }\r
-\r
- /**\r
- * L�trehozza az er�forr�s objektumot.\r
- * Implement�ci� f�gg�!\r
- * @return\r
- * A l�trehozott er�forr�s objektum. \r
- */\r
- abstract protected Object createObject();\r
-\r
- /**\r
- * Param�terek lek�rdez�se. \r
- * @return\r
- * CommonsProperties t�pus� param�ter objektum.\r
- */\r
- protected CommonsProperties getProperties() {\r
- return properties;\r
- }\r
-\r
- /**\r
- * K�lcs�nvett er�forr�s objektum visszaszolg�ltat�sa.\r
- * T�pus �s null pointer elle�rz�s a validateObject seg�ts�g�vel.\r
- * @param value\r
- * Er�forr�s objektum.\r
- */\r
- protected void lendObject(Object value) {\r
- if (pool == null) {\r
- throw new IllegalStateException("Pool never initialized, or closed. Did you missed something?");\r
- }\r
- validateObject(value);\r
- synchronized (this) {\r
- pool.add(value);\r
- }\r
- logger.trace(String.format("Lend, pool size: %1$d, counter: %2$d", pool.size(), resourceCounter));\r
- }\r
-\r
- /**\r
- * Er�forr�s objektum felszabad�t�sa (kapcsolat lez�r�s, \r
- * haszn�lt er�forr�sok felszabad�t�sa).\r
- * Implement�ci� f�gg�!\r
- * @param resourceObject\r
- * A sz�ban forg� objektum.\r
- */\r
- abstract protected void releaseObject(Object resourceObject);\r
-\r
- /**\r
- * Ellen�rzi, hogy az objektum t�pusa megfelel� e. \r
- */\r
- protected void validateObject(Object value) {\r
- if (value == null) {\r
- throw new NullPointerException("Object is null.");\r
- }\r
- }\r
-}\r
}\r
try {\r
ftpClient.logout();\r
- ftpClient.quit();\r
ftpClient.disconnect();\r
ftpClient = null;\r
} catch (Exception e) {\r
import java.sql.Connection;\r
import java.sql.DriverManager;\r
import java.sql.ResultSet;\r
+import java.sql.SQLException;\r
import java.sql.Statement;\r
import java.util.Properties;\r
\r
DefaultContext context = (DefaultContext) resourceObject;\r
boolean result = false;\r
String sql = "SELECT 1 FROM SYSIBM.SYSDUMMY1";\r
- try (Statement stmt = context.getConnection().createStatement()) {\r
- try (ResultSet resultSet = stmt.executeQuery(sql)) {\r
- result = true;\r
- } catch (Exception e2) {\r
- throw e2;\r
- }\r
+ Statement stmt = null;\r
+ ResultSet rs = null;\r
+ try {\r
+ stmt = context.getConnection().createStatement();\r
+ rs = stmt.executeQuery(sql);\r
+ result = true;\r
} catch (Exception e1) {\r
logger.catching(e1);\r
+ if (rs != null)\r
+ try {\r
+ rs.close();\r
+ } catch (SQLException e) {\r
+ logger.catching(e);\r
+ }\r
+ if (stmt != null)\r
+ try {\r
+ stmt.close();\r
+ } catch (SQLException e) {\r
+ logger.catching(e);\r
+ }\r
+\r
}\r
return result;\r
}\r
try {\r
if (context == null)\r
return;\r
-\r
- if (context.isClosed() == false) {\r
- context.close();\r
- }\r
- context = null;\r
+ context.close();\r
} catch (Exception e) {\r
- throw new PoolException(e.getMessage());\r
+ logger.catching(e);\r
+ //throw new PoolException(e.getMessage());\r
}\r
}\r
\r
}\r
}\r
\r
- if (resourceObject != null && checkObject(resourceObject) == true) {\r
+ if (resourceObject != null && !checkObject(resourceObject)) {\r
+ logger.debug("Resource not passed the check. Recreating.");\r
+ releaseObject(resourceObject);\r
synchronized (this) {\r
- logger.debug("Resource not passed the check. Recreating.");\r
if (pool.contains(resourceObject))\r
pool.remove(resourceObject);\r
resourceObject = createObject();\r
\r
private Map<Class<? extends IEntityBase>, IEntityBaseDAO> baseDAOs = new Hashtable<Class<? extends IEntityBase>, IEntityBaseDAO>();\r
private IChangeHandler itemTypeChangeFactory;\r
- private int connectionPoolSize = 5;\r
+ private int connectionPoolSize = 10;\r
\r
private ContextPool contextPool = null;\r
String dbDriver = "com.ibm.db2.jcc.DB2Driver";\r
private SignalServer signalServer;\r
private boolean useLucene;\r
private IMediaFinder finder;\r
+ private Connection connection;\r
\r
public ItemManager() {\r
initializeItemManager(signalServer);\r
@Override\r
public void connect() {\r
traceIn();\r
- ConnectionPoolProperties properties = new ConnectionPoolProperties(dbDriver, dbUrl, dbUser, dbPassword, false, 1000);\r
+ ConnectionPoolProperties properties = new ConnectionPoolProperties(dbDriver, dbUrl, dbUser, dbPassword, false, 2000);\r
properties.add(ResourcePool.POOLSIZE, connectionPoolSize);\r
contextPool = new ContextPool(properties);\r
\r
@Override\r
public void executeQuery(String query, IResultSetConsumer consumer, IStatementDecorator decorator) {\r
DefaultContext context = getDbContext();\r
- Connection connection = context.getConnection();\r
try {\r
+ connection = context.getConnection();\r
executeQuery(connection, query, consumer, decorator);\r
} catch (Exception e) {\r
} finally {\r
- putDbContext(context);\r
+ if (context != null)\r
+ putDbContext(context);\r
}\r
}\r
\r
@Override\r
public void executeUpdate(String query, IStatementDecorator decorator) {\r
DefaultContext context = getDbContext();\r
- Connection connection = context.getConnection();\r
+ Connection connection = null;\r
try {\r
+ connection = context.getConnection();\r
executeUpdate(connection, query, decorator);\r
} catch (Exception e) {\r
} finally {\r
<?xml version="1.0" encoding="UTF-8"?>\r
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c" ?>\r
<?init class="user.jobengine.zk.util.AdminAuthInitiator"?>\r
-<zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:ca="client/attribute">\r
+<zk xmlns:w="http://www.zkoss.org/2005/zk/client" xmlns:ca="client/attribute" xmlns:x="xhtml">\r
<style>\r
.z-progressmeter { height: 16px; border: 1px solid #cfcfcf; background: #fff 0 0 repeat-x; text-align: left; overflow: hidden; // background-image:\r
url(/zkau/web/1bf94a1d/zul/img/misc/prgmeter-anim.gif); }\r
</style>\r
+ \r
<!-- csak igy jo a list sebessege -->\r
<custom-attributes org.zkoss.zul.listbox.rod="true" />\r
<custom-attributes org.zkoss.zul.listbox.initRodSize="50" />\r
<custom-attributes org.zkoss.zul.listbox.preloadSize="50" />\r
+ <custom-attributes org.zkoss.zul.listbox.selectOnHighlight.disabled="true" />\r
\r
<div id="scdiv" width="100%" height="100%" viewModel="@id('jlm') @init('user.jobengine.zk.model.JobListModel')">\r
<timer id="timer" delay="500" repeats="true" onTimer="@command('uiTick')" />\r
<toolbarbutton label="Takarítás" iconSclass="z-icon-eraser" onClick="@command('cleanupSuspended')" autodisable="self"/>\r
<separator orient="vertical"/>\r
<textbox value="@bind(jlm.searchText)" onOK="@command('searchRelated')" onCancel="@command('resetSearchRelated')"/>\r
+ <!--<combobox selectedItem="@bind(jlm.searchStatus)" model="@load(jlm.searchStatuses)" readonly="true"/>-->\r
<toolbarbutton label="NEXIO szinkronizálás" iconSclass="z-icon-renren" onClick="@command('restartNexio')" visible="${not sessionScope.nexioDisable}" autodisable="self"/>\r
</toolbar>\r
\r
<div height="100%" width="100%">\r
<groupbox height="94%" closable="false">\r
<caption sclass="boldfont" label="Aktív folyamatok" />\r
- <!-- <borderlayout> -->\r
- <!-- <center> -->\r
- <listbox id="lbJobList" sizedByContent="false" span="false" model="@load(jlm.jobList)" multiple="true" pagingPosition="top" mold="paging" autopaging="true"\r
+ <listbox id="lbJobList" sizedByContent="false" span="false" model="@load(jlm.jobList)" multiple="true" pagingPosition="top" autopaging="true" mold="paging"\r
vflex="true" checkmark="true" style="border: none; background: #e3e3e3 !important;" oddRowSclass="listbox-odd-style" sclass="listbox-normal-style"\r
emptyMessage="Nincs futó folyamat" onSelect="@command('onSelect')" >\r
<listhead sizable="true">\r
- <listheader label="Id" hflex="min" align="left" sort="auto" />\r
- <listheader label="ParentId" hflex="min" align="left" sort="auto" />\r
- <listheader label="Indítás" hflex="min" align="left" sort="auto" />\r
- <listheader label="Kész" hflex="min" align="left" sort="auto" />\r
- <listheader label="Név" hflex="min" align="left" sort="auto" />\r
- <listheader label="Prioritás" hflex="min" align="left" sort="auto" />\r
- <listheader label="Anyag" width="120px" align="left" sort="auto" />\r
- <listheader label="Állapot" width="120px" align="left" sort="auto" />\r
- <listheader label="Készültség" width="100px" align="left" sort="auto" />\r
- <listheader label="Üzenet" hflex="max" align="left" sort="auto" />\r
+ <listheader label="Id" hflex="min" align="left" sort="auto(id)" />\r
+ <listheader label="ParentId" hflex="min" align="left" sort="auto(parentJobId)" />\r
+ <listheader label="Indítás" hflex="min" align="left" sort="auto(submitted)" />\r
+ <listheader label="Kész" hflex="min" align="left" sort="auto(finnished)" />\r
+ <listheader label="Név" width="140px" align="left" sort="auto(name)" />\r
+ <listheader label="Prioritás" hflex="min" align="left" sort="auto(priority)" />\r
+ <listheader label="Anyag" width="140px" align="left" sort="auto(related)" />\r
+ <listheader label="Állapot" width="120px" align="left" sort="auto(status)" />\r
+ <listheader label="Készültség" width="100px" align="left" sort="auto(progress)" />\r
+ <listheader label="Üzenet" hflex="max" align="left" sort="auto(description)" />\r
<listheader label="Paraméterek" hflex="min" align="left" sort="auto" />\r
</listhead>\r
\r
<listcell label="@load(each.parentJobId)" />\r
<listcell label="@load(each.submitted)" />\r
<listcell label="@load(each.finished)" />\r
- <listcell label="@load(each.name)" />\r
+ <listcell label="@load(each.name)" tooltiptext="@load(each.name)" />\r
<listcell label="@load(each.priority)" />\r
<listcell label="@load(each.related)" />\r
<listcell label="@load(each.status)" />\r
</borderlayout>\r
\r
<hbox width="100%" pack="center" align="center">\r
+ <button id="reloadButton" label="Frissítés" onClick="@command('reload')" />\r
<button id="closeButton" label="Mégsem" onClick="@command('close')" />\r
<button id="executeButton" label="Futtatás" onClick="@command('execute')" />\r
</hbox>\r
return isService;
}
+ public boolean isTouchedByExecutor() {
+ if (!getStatus().equals(JobStatus.WAIT_EXECUTOR))
+ return false;
+ if (ip > 0) {
+ int executorInstructionCount = 0;
+ for (int i = ip; i == 0; i--) {
+ IInstruction instruction = program.get(i);
+ if (instruction instanceof CallJobStepInstruction)
+ executorInstructionCount++;
+ }
+
+ if (executorInstructionCount == 1)
+ return true;
+ }
+
+ return false;
+ }
+
@Override
public boolean isWaitFinish() {
return JobStatus.WAIT_FINISH.equals(status);
savedStatus = status;
}
- @Override
- public void setCancelable(boolean cancelable) {
- this.cancelable = cancelable;
- }
-
/*
private final EventListenerList listeners = new EventListenerList();
private List<JobRuntime> children;
private Semaphore forkSempahore;
private IJobChangedListener jobChangedListener;
private List<Long> childrenIDs;
-
+
* */
+ @Override
+ public void setCancelable(boolean cancelable) {
+ this.cancelable = cancelable;
+ }
+
@Override
public void setCurrentStep(String currentStep) {
this.currentStep = currentStep;
private IJobEngine jobEngine = null;\r
private BasicDBList scheduleJobs;\r
\r
- private int schedulerJobId;\r
-\r
public SchedulerService(IJobEngine jobEngine) throws Exception {\r
// http://www.quartz-scheduler.org/documentation/quartz-2.2.x/configuration/\r
// https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm\r
this.jobEngine = jobEngine;\r
- scheduler = StdSchedulerFactory.getDefaultScheduler();\r
}\r
\r
public ScheduledJob createScheduledJob(BasicDBObject jobJSON) {\r
logger.error("Missing system property: 'jobengine.jobscheduling.config'");\r
return;\r
}\r
+ logger.error("Loading scheduler configuration file: {}", configPath);\r
File schedulingConfigFile = new File(configPath);\r
if (schedulingConfigFile.exists()) {\r
String jsonConfig = new String(Files.readAllBytes(Paths.get(schedulingConfigFile.getAbsolutePath())));\r
logger.info("{} is registered in scheduler", job);\r
}\r
\r
+ public void restart() throws Exception {\r
+ shutdown();\r
+ startup();\r
+ }\r
+\r
public void schedule(ScheduledJob job) {\r
job.setJobEngine(jobEngine);\r
String jobID = job.getJobId();\r
}\r
\r
public void startup() throws Exception {\r
+ scheduler = StdSchedulerFactory.getDefaultScheduler();\r
scheduler.start();\r
loadStartupJobsFromConfig();\r
}\r
\r
import static java.util.stream.Collectors.toList;\r
\r
+import java.util.Arrays;\r
import java.util.HashSet;\r
import java.util.List;\r
import java.util.Map;\r
import org.zkoss.zul.Window;\r
\r
import user.commons.IJob;\r
+import user.commons.JobStatus;\r
import user.commons.ListUtils;\r
import user.commons.nexio.INexioAPI;\r
import user.commons.nexio.NexioDispatcher;\r
private boolean allExecutionDisabled;\r
private boolean scheduledExecutionDisabled;\r
private String searchText;\r
+ private JobStatus searchStatus;\r
+ private List<JobStatus> searchStatuses;\r
\r
@Command\r
public void cancelAllJobs() {\r
return newPriority;\r
}\r
\r
+ public JobStatus getSearchStatus() {\r
+ return searchStatus;\r
+ }\r
+\r
+ public List<JobStatus> getSearchStatuses() {\r
+ return searchStatuses;\r
+ }\r
+\r
public String getSearchText() {\r
return searchText;\r
}\r
initializeList();\r
setAllExecutionDisabled(jobEngine.isAllExecutionDisabled());\r
setScheduledExecutionDisabled(jobEngine.isScheduledExecutionDisabled());\r
+\r
+ searchStatuses = Arrays.asList(null, JobStatus.SUSPENDED, JobStatus.EXECUTING);\r
+\r
} catch (Exception e) {\r
logger.catching(e);\r
setStartupDisabled(true);\r
\r
@Override\r
public void jobChanged(JobChangedEvent event) {\r
+\r
+ //az update mehet\r
+ // if ((searchText != null && searchText.trim().length() > 4) || searchStatus != null)\r
+ // return;\r
+\r
JobChangedEvent jobEvent = event;\r
final IJobRuntime job = jobEvent.getJob();\r
if (jobEvent.getSignalType().equals(SignalType.CREATE)) {\r
notifyChange("jobList");\r
}\r
\r
- private void onJobUpdated(IJobRuntime job) {\r
- //List<IJobRuntime> savedSelectedJobs = new ArrayList<>(selectedJobs);\r
- jobList.notifyChange(job);\r
- }\r
-\r
- @Command\r
- public void onSelect() {\r
- logger.info("Selection changed!");\r
- notifyChange("updatePriorityDisabled");\r
- }\r
-\r
// @Command\r
// public void restart() {\r
// startupDisabled = true;\r
// initializeList();\r
// }\r
\r
+ private void onJobUpdated(IJobRuntime job) {\r
+ //List<IJobRuntime> savedSelectedJobs = new ArrayList<>(selectedJobs);\r
+ jobList.notifyChange(job);\r
+ }\r
+\r
+ @Command\r
+ public void onSelect() {\r
+ logger.info("Selection changed!");\r
+ notifyChange("updatePriorityDisabled");\r
+ }\r
+\r
private void onShutdown() {\r
setShutdownDisabled(true);\r
\r
}\r
\r
@Command\r
- @NotifyChange("searchText")\r
+ @NotifyChange("searchStatus")\r
public void resetSearchRelated() {\r
logger.info("Reset search");\r
setSearchText("");\r
}\r
\r
@Command\r
+ @NotifyChange("searchStatus")\r
public void searchRelated() {\r
\r
if (StringUtils.isBlank(searchText)) {\r
resetSearchRelated();\r
return;\r
}\r
+ setSearchStatus(null);\r
+ notifyChange("searchStatus");\r
\r
initializeList();\r
\r
\r
logger.info("Search {}", searchText);\r
String trimmedSearchText = StringUtils.trim(searchText);\r
- if (trimmedSearchText.length() < 5) {\r
+ if (trimmedSearchText.length() < 4) {\r
Messagebox.show("Minimum 4 karakter begépelése szükséges a kereséshez.", "Figyelmeztetés", Messagebox.OK, Messagebox.INFORMATION);\r
return;\r
}\r
jobEngine.setScheduledExecutionDisabled(scheduledExecutionDisabled);\r
}\r
\r
+ public void setSearchStatus(JobStatus searchStatus) {\r
+ this.searchStatus = searchStatus;\r
+ logger.info("Selected {}", searchStatus);\r
+ }\r
+\r
+ public void setSearchStatuses(List<JobStatus> searchStatuses) {\r
+ this.searchStatuses = searchStatuses;\r
+ }\r
+\r
public void setSearchText(String searchText) {\r
if (!searchText.equals(this.searchText)) {\r
this.searchText = searchText;\r
import org.zkoss.bind.annotation.ContextParam;\r
import org.zkoss.bind.annotation.ContextType;\r
import org.zkoss.bind.annotation.Init;\r
+import org.zkoss.bind.annotation.NotifyChange;\r
import org.zkoss.zk.ui.Component;\r
import org.zkoss.zk.ui.Executions;\r
import org.zkoss.zk.ui.select.Selectors;\r
jobs = new ListModelList<>(NoSQLUtils.asList(jobEngine.getScheduler().getScheduleJobs()));\r
}\r
\r
+ @Command\r
+ @NotifyChange("jobs")\r
+ public void reload() {\r
+ SchedulerService scheduler = jobEngine.getScheduler();\r
+ try {\r
+ scheduler.restart();\r
+ jobs = new ListModelList<>(NoSQLUtils.asList(scheduler.getScheduleJobs()));\r
+ } catch (Exception e) {\r
+ logger.info("Scheduler reload error. System message: {}", e.getMessage());\r
+ }\r
+\r
+ }\r
+\r
public void setJobs(ListModelList<BasicDBObject> jobs) {\r
this.jobs = jobs;\r
}\r