public class FtpDirectoryLister implements IDirectoryLister {\r
private final StoreUri storeUri;\r
private FTPClient ftpClient;\r
- private boolean completed;\r
+ private boolean checkCompletePending;\r
\r
public FtpDirectoryLister(StoreUri storeUri) {\r
this.storeUri = storeUri;\r
connect();\r
if (ftpClient != null) {\r
input = ftpClient.retrieveFileStream(name);\r
- completed = true;\r
+ checkCompletePending = true;\r
if (input != null) {\r
input.close();\r
completePendingCommand();\r
@Override\r
public void cleanUp() throws Exception {\r
if (ftpClient != null) {\r
+ if (checkCompletePending) {\r
+ completePendingCommand();\r
+ }\r
if (ftpClient.isConnected()) {\r
ftpClient.logout();\r
ftpClient.disconnect();\r
} else {\r
ftpClient = null;\r
}\r
- if (completed) {\r
- completePendingCommand();\r
- }\r
}\r
}\r
\r
private void completePendingCommand() throws Exception {\r
- if (completed) {\r
+ if (checkCompletePending) {\r
if (ftpClient != null) {\r
- ftpClient.completePendingCommand();\r
- completed = false;\r
+ boolean completePendingCommand = ftpClient.completePendingCommand();\r
+ if (!completePendingCommand)\r
+ throw new Exception("Transfer not completed!");\r
+ checkCompletePending = false;\r
}\r
}\r
}\r
connect();\r
if (ftpClient != null) {\r
input = ftpClient.retrieveFileStream(remoteFile.getName());\r
- completed = true;\r
+ checkCompletePending = true;\r
}\r
return input;\r
}\r
connect();\r
if (ftpClient != null) {\r
output = ftpClient.storeFileStream(remoteFile.getName());\r
- completed = true;\r
+ checkCompletePending = true;\r
}\r
return output;\r
\r
-select * from media where id = 76952087\r
+drop function HIGHLIGHT\r
+go\r
+CREATE FUNCTION HIGHLIGHT (content CLOB(400000), starttag VARCHAR(20), endtag VARCHAR(20), pattern VARCHAR(1000))\r
+ RETURNS VARCHAR(32000)\r
+ LANGUAGE SQL\r
+ NO EXTERNAL ACTION\r
+ READS SQL DATA\r
+ DETERMINISTIC\r
+BEGIN\r
+ DECLARE RESULT VARCHAR(32000) DEFAULT '';\r
+ DECLARE CHUNKSIZE INT DEFAULT 10000;\r
+ DECLARE CHUNK VARCHAR(10000);\r
+ DECLARE CHUNKSTART INT DEFAULT 1;\r
+ DECLARE HITSTART INT DEFAULT 1;\r
+ WHILE LENGTH(RESULT) = 0 AND CHUNKSTART < LENGTH(content) DO\r
+ SET CHUNK = DBMS_LOB.SUBSTR(content, CHUNKSIZE, CHUNKSTART);\r
+ SET HITSTART = REGEXP_INSTR(CHUNK, pattern, 1, 1, 0, 'i');\r
+ IF HITSTART > 0 THEN\r
+ IF CHUNKSTART + HITSTART > 100 THEN\r
+ SET CHUNK = DBMS_LOB.SUBSTR(content, 200, CHUNKSTART + HITSTART - 100);\r
+ ELSE\r
+ SET CHUNK = DBMS_LOB.SUBSTR(content, 200, CHUNKSTART);\r
+ END IF; \r
+ SET CHUNK = REPLACE(CHUNK, '<', '');\r
+ SET CHUNK = REPLACE(CHUNK, '>', '');\r
+ SET RESULT = '...' || REGEXP_REPLACE(CHUNK, pattern, starttag||'$0'||endtag,1,0,'i') || '...';\r
+ END IF; \r
+ SET CHUNKSTART = CHUNKSTART + CHUNKSIZE;\r
+ END WHILE;\r
+ RETURN RESULT;\r
+END\r
+go\r
+\r
+select REGEXP_COUNT('Ha tettem máskor is az nem az én hibám', 'máskor|hib')from sysibm.sysdummy1\r
+select HIGHLIGHT(clob('Ha tettem máskor is az nem az én hibám'), '<b>', '</b>', 'máskor|hib') from sysibm.sysdummy1 \r
+select HIGHLIGHT(description, '<b>', '</b>', 'egy') from mediadescription fetch first 1000 rows only\r
+\r
+select * from mediadescription where length(description) > 50000 fetch first row only\r
+select HIGHLIGHT(description, '<b>', '</b>', 'sdert') from mediadescription where id=253824\r
+\r
+SELECT REGEXP_SUBSTR('hello to you', '.o',1,2) FROM sysibm.sysdummy1\r
+SELECT REGEXP_INSTR('hello to you', '.x', 1, 1, 0, 'i') FROM sysibm.sysdummy1\r
+\r
+select 'a'||'b' from sysibm.sysdummy1 \r
+\r
+select *, HIGHLIGHT(description, '<b>', '</b>', 'szolnok') from mediadescription where REGEXP_COUNT(description, 'szolnok') > 0\r
+\r
+\r
+SELECT i.id itemid,i.title itemtitle,m.id mediaid,m.title mediatitle,m.archived,m.length,m.itemtypeid mediaitemtypeid,md.description,it.name mediaitemtypename,m.houseid mediahouseid,mf.houseid mediafilehouseid,vw_mf.mediafilecount FROM ITEM i, MEDIA m, MEDIAFILE mf, MEDIADESCRIPTION md, VW_MEDIAFILES vw_mf, ITEMTYPE it WHERE i.id = md.itemid AND m.id = md.mediaid AND mf.id = md.mediafileid AND m.id=vw_mf.mediaid AND m.itemTypeId = it.id AND CONTAINS(md.description, 'trend*') >= 1 ORDER BY length ASC\r
+\r
+select DBMS_LOB.SUBSTR(description, 30000, 1), DBMS_LOB.SUBSTR(description, 30000, 30001), DBMS_LOB.SUBSTR(description, 30000, 60001) from mediadescription where id =268217\r
+\r
+select REGEXP_REPLACE(\r
+ DBMS_LOB.SUBSTR(description, 10000, 1),\r
+ 'főcím|mos','<b>$0</b>',1,0,'i') from mediadescription where id =268217\r
+\r
+SELECT \r
+\r
+\r
+select id, length(description) from mediadescription order by length(description) desc\r
+\r
+select * from media where id = 76952087\r
\r
select id,archived from media where length=0 order by archived desc\r
--Letezo mediahousid lekerdezese\r
import user.commons.CalendarUtils;\r
import user.commons.IEntityBase;\r
import user.commons.ListUtils;\r
+import user.commons.StoreUri;\r
import user.commons.logging.LogUtils;\r
import user.commons.nosql.NoSQLUtils;\r
import user.commons.octopus.IOctopusAPI;\r
import user.commons.octopus.OctopusAPI;\r
+import user.commons.remotestore.IProgressEventListener;\r
+import user.commons.remotestore.ProgressEvent;\r
+import user.commons.remotestore.RemoteStoreProtocol;\r
import user.jobengine.db.IItemManager;\r
import user.jobengine.db.IResultSetConsumer;\r
import user.jobengine.db.IStatementDecorator;\r
}\r
\r
@Test\r
- public void test1() throws IOException {\r
+ public void test1() throws Exception {\r
+ StoreUri source = manager.createStoreUri(RemoteStoreProtocol.LOCAL, "c:\\_video");\r
+ source.addProgressListener(new IProgressEventListener() {\r
+ @Override\r
+ public void progressChanged(ProgressEvent evt) {\r
+ System.out.println(evt.getProgress());\r
+ }\r
+ });\r
+\r
+ StoreUri target = manager.createStoreUri(RemoteStoreProtocol.FTP, "10.10.1.55");\r
+ target.setPortNumber(2098);\r
+ target.setUserName("administrator");\r
+ target.setPassword("VR300");\r
+\r
+ source.transferFrom(target, "TEST180720.MXF", "TEST180720.MXF");\r
\r
}\r
\r