Project

General

Profile

« Previous | Next » 

Revision 5420

Added by berkley about 14 years ago

fixing date formatting and timezone issues

View differences:

test/edu/ucsb/nceas/metacat/dataone/CrudServiceTest.java
91 91
		suite.addTest(new CrudServiceTest("testSingletonAccessor"));
92 92
		suite.addTest(new CrudServiceTest("testCreateAndGet"));
93 93
		suite.addTest(new CrudServiceTest("testGetSystemMetadata"));
94
		suite.addTest(new CrudServiceTest("testUpdate"));
95
		suite.addTest(new CrudServiceTest("testListObjects"));
94
		suite.addTest(new CrudServiceTest("testUpdate"));*/
95
		suite.addTest(new CrudServiceTest("testListObjects"));/*
96 96
		suite.addTest(new CrudServiceTest("testAccessControl"));
97 97
		suite.addTest(new CrudServiceTest("testGenerateMissingSystemMetadata"));*/
98
		suite.addTest(new CrudServiceTest("testGetLogRecords"));
98
		//suite.addTest(new CrudServiceTest("testGetLogRecords"));
99 99
		//suite.addTest(new CrudServiceTest("testChecksumError"));
100 100
		//suite.addTest(new CrudServiceTest("testPublicAccess"));
101 101
		return suite;
src/edu/ucsb/nceas/metacat/dataone/CrudService.java
35 35
import java.sql.SQLException;
36 36
import java.util.*;
37 37
import java.text.DateFormat;
38
import java.text.SimpleDateFormat;
38 39

  
39 40
import javax.servlet.ServletContext;
40 41
import javax.servlet.http.HttpServletRequest;
......
97 98
    private Logger logCrud = null;
98 99
    
99 100
    private String metacatUrl;
101
    
102
    private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
100 103

  
101 104
    /**
102 105
     * singleton accessor
......
493 496
              }
494 497
              
495 498
              String dateSMM = d.getField("dateSysMetadataModified");
496
              //System.out.println("docid: " + d.docid + " dateSMM: " + dateSMM);
497 499
              if((startTime != null || endTime != null) && dateSMM == null)
498 500
              {  //if startTime or endTime are not null, we need a date to compare to
499 501
                  continue;
......
503 505
              Date dateSysMetadataModified = null;
504 506
              if(dateSMM != null)
505 507
              {
506
                  dateSysMetadataModified = parseDate(dateSMM);
508
                  //dateSysMetadataModified = parseDate(dateSMM);
509
                  if(dateSMM.indexOf(".") != -1)
510
                  {  //strip the milliseconds
511
                      dateSMM = dateSMM.substring(0, dateSMM.indexOf(".")) + 'Z';
512
                  }
513
                  //System.out.println("dateSMM: " + dateSMM);
514
                  dateFormat.setTimeZone(TimeZone.getTimeZone("GMT-0"));
515
                  dateSysMetadataModified = dateFormat.parse(dateSMM);
516
                  //System.out.println("dateSysMetadataModified: " + dateSysMetadataModified);
517
                  
518
                  //dateSysMetadataModified = getDateInTimeZone(dateSysMetadataModified, TimeZone.getDefault().getID());
519
                  //System.out.println("dateSysMetadataModified after convertion to default timezone: " + dateSysMetadataModified);
507 520
              }
508
              //System.out.println("dateSysMetadataModified: " + dateSysMetadataModified);
509
              //System.out.println("startTime: " + startTime);
510
              //System.out.println("endtime: " + endTime);
521
              /*System.out.println("docid: " + d.docid);
522
              System.out.println("dateSysMetadataModified: " + dateSysMetadataModified);
523
              System.out.println("startTime: " + startTime);
524
              System.out.println("endtime: " + endTime);*/
511 525
              int startDateComparison = 0;
512 526
              int endDateComparison = 0;
513 527
              if(startTime != null)
......
555 569
          
556 570
          docs = docCopy;
557 571
          totalAfterQuery = docs.size();
558
          //System.out.println("total after subquery: " + totalAfterQuery);
572
          System.out.println("total after subquery: " + totalAfterQuery);
559 573
          
560 574
          //make sure we don't run over the end
561 575
          int end = start + count;
......
628 642
      ol.setCount(count);
629 643
      ol.setStart(start);
630 644
      ol.setTotal(totalAfterQuery);
645
      System.out.println("returning " + ol.sizeObjectInfoList() + " items in the object list");
631 646
      return ol;
632 647
    }
633 648
    
......
1186 1201

  
1187 1202
        return newFile;
1188 1203
    }
1204
    
1205
    private static Date getDateInTimeZone(Date currentDate, String timeZoneId)
1206
    {
1207
        TimeZone tz = TimeZone.getTimeZone(timeZoneId);
1208
        Calendar mbCal = new GregorianCalendar(TimeZone.getTimeZone(timeZoneId));
1209
        mbCal.setTimeInMillis(currentDate.getTime());
1189 1210

  
1211
        Calendar cal = Calendar.getInstance();
1212
        cal.set(Calendar.YEAR, mbCal.get(Calendar.YEAR));
1213
        cal.set(Calendar.MONTH, mbCal.get(Calendar.MONTH));
1214
        cal.set(Calendar.DAY_OF_MONTH, mbCal.get(Calendar.DAY_OF_MONTH));
1215
        cal.set(Calendar.HOUR_OF_DAY, mbCal.get(Calendar.HOUR_OF_DAY));
1216
        cal.set(Calendar.MINUTE, mbCal.get(Calendar.MINUTE));
1217
        cal.set(Calendar.SECOND, mbCal.get(Calendar.SECOND));
1218
        cal.set(Calendar.MILLISECOND, mbCal.get(Calendar.MILLISECOND));
1219

  
1220
        return cal.getTime();
1221
    }
1222

  
1190 1223
    /**
1191 1224
     * insert a systemMetadata doc
1192 1225
     */
......
1199 1232
        Identifier sysMetaGuid = new Identifier();
1200 1233
        sysMetaGuid.setValue(DocumentUtil.generateDocumentId(1));
1201 1234
        sysmeta.setDateSysMetadataModified(new Date());
1235
        System.out.println("****inserting new system metadata with modified date " + sysmeta.getDateSysMetadataModified());
1202 1236

  
1203 1237
        String xml = new String(serializeSystemMetadata(sysmeta).toByteArray());
1204 1238
        String localId = insertDocument(xml, sysMetaGuid, sessionData);
1239
        System.out.println("sysmeta inserted with localId " + localId);
1205 1240
        //insert the system metadata doc id into the identifiers table to 
1206 1241
        //link it to the data or metadata document
1207 1242
        IdentifierManager.getInstance().createSystemMetadataMapping(
......
1434 1469
        String year = date.substring(0, 4);
1435 1470
        String month = date.substring(5, 7);
1436 1471
        String day = date.substring(8, 10);
1437
        Calendar c = Calendar.getInstance();
1472
        Calendar c = Calendar.getInstance(TimeZone.getDefault());
1438 1473
        c.set(new Integer(year).intValue(), 
1439 1474
              new Integer(month).intValue(), 
1440 1475
              new Integer(day).intValue());
1476
        System.out.println("time in parseMetacatDate: " + c.getTime());
1441 1477
        return c.getTime();
1442 1478
    }
1443 1479
    

Also available in: Unified diff