[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 {


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.

-----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?

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

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

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 = 


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;

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) {


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

-------------- 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