[concurrency-interest] R: RE: Help

edsen at libero.it edsen at libero.it
Tue Jan 24 03:15:41 EST 2012


Hi all,

 

sorry I forgot to put the code for that function.

 

In the class is defined:


public static SimpleDateFormat sdfInput = (SimpleDateFormat) SimpleDateFormat.getInstance();
protected static long timestampFromFileName = -1;

 
The function is:
public static long setDateTimeFromFileName(final String datetime,final String dataFormat) {


try {timestampFromFileName = convertTimestampFromStringToLong(datetime,dataFormat);
      } catch (Exception e) {
        timestampFromFileName = -1;
     }
       return timestampFromFileName;
}
 





public static long convertTimestampFromStringToLong(String timestamp,String format) throws Exception {
sdfInput.applyPattern(format);


sdfInput.setTimeZone(TimeZone.getTimeZone("GMT"));


return sdfInput.parse(timestamp).getTime();
}


 
Thanks for your attention.
 
 

 
----Messaggio originale----
Da: davidcholmes at aapt.net.au
Data: 23-gen-2012 23.40
A: "Dr Heinz M. Kabutz"<heinz at javaspecialists.eu>, <edsen at libero.it>
Cc: <concurrency-interest at cs.oswego.edu>
Ogg: RE: [concurrency-interest] Help

 
This is off-topic for this list.
 
David

-----Original Message-----
From: concurrency-interest-bounces at cs.oswego.edu [mailto:concurrency-interest-bounces at cs.oswego.edu]On Behalf Of Dr Heinz M. Kabutz
Sent: Tuesday, 24 January 2012 6:12 AM
To: edsen at libero.it
Cc: concurrency-interest at cs.oswego.edu
Subject: Re: [concurrency-interest] Help

Does "Strings.setDateTimeFromFileName" by any chance use java.util.SimpleDateFormat stored in a static field?

Otherwise, could you please send us some working code that we can run in order to see the effect you are talking about?
Regards

Heinz
-- 
Dr Heinz M. Kabutz (PhD CompSci)
Author of "The Java(tm) Specialists' Newsletter"
Sun Java Champion
IEEE Certified Software Development Professional
http://www.javaspecialists.eu
Tel: +30 69 72 850 460
Skype: kabutz 


On 1/23/12 10:31 AM, edsen at libero.it wrote: 

Hello,
 
I need orders my files from list directory, that is changing continously.
My files must be fetched by order-date (oldest from newest...) and I check the age of files from file naming convention. The files are:XXXXX_yymmdd.
Below you can find the code that get the following input parameters: 
 
- this.directory: directory of file list.
- fileRegexp: regular expression in order to retrieve the date.
- datetimeGroup: group where the date is present in the file naming convention.
- timestampFromFileNameFormat: date format convention.
 


// get the list of files currently in the directory

 



File[] files = 

this.dirListByDate(this.directory,fileRegexp,datetimeGroup,timestampFromFileNameFormat);
 
 
 



protected  File[] dirListByDate(final File folder, final Pattern fileRegexp, final int datetimeGroup, final String timestampFromFileNameFormat) throws IOException {

 
if  (!folder.isDirectory() || !folder.exists()) {

throw new
IOException(folder.getName() +  " : Not a folder or not exist");
}
 
File files[] = this.list(folder, false); 
// don't include subfolder
Arrays.sort(files, newComparator<Object>() {

public int compare(final Object o1, final Object o2) {
 

final String s1 = ((File) o1).getName();

final String s2 = ((File) o2).getName();

final  Matcher m = fileRegexp.matcher(s1);

final  Matcher n = fileRegexp.matcher(s2);

 
if  (m.matches() && n.matches()) {

final String date1 = m.group(datetimeGroup);

final String date2 = n.group(datetimeGroup);

final long dateAndTime1 = Strings.setDateTimeFromFileName(date1, timestampFromFileNameFormat);

final long dateAndTime2 = Strings.setDateTimeFromFileName(date2, timestampFromFileNameFormat);
 
return dateAndTime1 < dateAndTime2 ? -1 : dateAndTime1 > dateAndTime2 ? 1 : 0;
}
else
{

log.error("Files don't match...File1->" + s1 + " File2 -> " + s2);

alarm.sendAlarm(AlarmInterface.FILE_NAMING_CONVENTION_FAILED,"File Naming Convention incorrect: "
+
s1 + 

" with size " + s1.getBytes() + " of directory " + folder + s2 + 

" with size " + s2.getBytes() + " of directory "+ folder);

return 0;
}
}
});

return files;
 
 
 



protected File[] list(File folder, boolean includeSubFolder) {

 
if  (!folder.isDirectory()) {

return null;
}
 
File files[] = folder.listFiles();
List<File> list = new ArrayList<File>();

 
for (File file : files) {

 
if  (file.isDirectory()) {

if (includeSubFolder) {
list.add(file); 
  }
} 

else
{
list.add(file);
}
}
 

if(list.isEmpty()) {

return list.toArray(newFile[] {});
}

return list.toArray(new File[] {});
}
 
What happens? Happens that every thing works for 3-4 traffic days, but sometimes it processes newest files instead of oldest.
I don't understand what can be wrong??
Can you help me in order to fix it?
Can you suggest me a solution?
 
Thanks in advance.
Kind regards.
 
 
 
 
_______________________________________________
Concurrency-interest mailing list
Concurrency-interest at cs.oswego.edu
http://cs.oswego.edu/mailman/listinfo/concurrency-interest
  



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20120124/cd4e605e/attachment-0001.html>


More information about the Concurrency-interest mailing list