Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello everyone, I'm trying to compare filename with date inside to whether or not delete them.
Since I have 2 types of filesname : "AA_MAGAS_yyyyMMdd_hhmm" and "AA_BBB_CCC_yyyyMMdd_hhmm" , my idea was to substring the filename (from 9 to 22 for first file type and 11 to 24 for the second one), get the date out & compare it. Then use this result in a run if condition to delete it.
My job was working for only 1 file type, but since I tried a IF condition to deal with the 2 filesname, its not working anymore. Can someone have a check ?
if ( ((String)globalMap.get("tFileList_1_CURRENT_FILE")).equals("AA_MAGAS_*") ) { context.strdate = ((String)globalMap.get("tFileList_1_CURRENT_FILE")).substring(9,22); context.date = TalendDate.parseDate("yyyyMMdd_hhmm",context.strdate); //difference of days between current date & file date, >15 = delete (runif) context.difference = TalendDate.diffDate(TalendDate.getCurrentDate(),context.date,"dd"); } else { context.ecodate = ((String)globalMap.get("tFileList_1_CURRENT_FILE")).substring(11,24); context.date = TalendDate.parseDate("yyyyMMdd_hhmm", context.ecodate); context.difference = TalendDate.diffDate(TalendDate.getCurrentDate(),context.date,"dd"); };
My error, seems like the IF condition is not working because the substring get it wrong :
java.lang.RuntimeException: java.text.ParseException: Unparseable date: "180210_0345.x"
import java.util.regex.*; String fname1= "AAA_BBBB_CCC_DDD_20180101_1233.xml"; String fname2= "AAA_20010101_0833_foo.xml"; Matcher m1 = Pattern.compile(".*([0-9]{8}_[0-9]{4}).*").matcher(fname1); Matcher m2 = Pattern.compile(".*([0-9]{8}_[0-9]{4}).*").matcher(fname2); if(m1.matches() && m2.matches()) { System.out.println("dt file1: " + m1.group(1)); System.out.println("dt file2: " + m2.group(1)); }
import java.util.regex.*; String fname1= "AAA_BBBB_CCC_DDD_20180101_1233.xml"; String fname2= "AAA_20010101_0833_foo.xml"; Matcher m1 = Pattern.compile(".*([0-9]{8}_[0-9]{4}).*").matcher(fname1); Matcher m2 = Pattern.compile(".*([0-9]{8}_[0-9]{4}).*").matcher(fname2); if(m1.matches() && m2.matches()) { System.out.println("dt file1: " + m1.group(1)); System.out.println("dt file2: " + m2.group(1)); }