Revision: 4895
http://sourceforge.net/p/vexi/code/4895
Author: mkpg2
Date: 2016-11-02 01:51:19 +0000 (Wed, 02 Nov 2016)
Log Message:
-----------
Merge changes/improvements from external code branch (eapi copy).
Modified Paths:
--------------
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Date.java
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Instant.java
Modified:
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Date.java
===================================================================
---
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Date.java
2016-10-30 01:43:08 UTC (rev 4894)
+++
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Date.java
2016-11-02 01:51:19 UTC (rev 4895)
@@ -162,7 +162,7 @@
vs[index] = value;
}
- Date newDate(Calendar cal) {
+ public Date newDate(Calendar cal) {
cal = initCalendar(cal);
int[] parts = new int[partIds.length];
@@ -172,13 +172,13 @@
return newDateNoCheck(parts);
}
- Date newDate(int[] parts) throws ValueException{
+ public Date newDate(int[] parts) throws ValueException{
// conservatively always checking, may skip this test in
certain situations
checkValidity(parts);
return newDateNoCheck(parts);
}
- Date newDateNoCheck(int[] parts) {
+ public Date newDateNoCheck(int[] parts) {
return new Date(this, parts);
}
@@ -279,6 +279,7 @@
static Pattern p =
Pattern.compile("([0-9]{1,4})((wk)|[q-])?([0-9]{1,2})?(-([0-9]{1,2})(
([0-9]{1,2})(:([0-9]{1,2}))?)?)?");
static public Date parseString(String s) throws ValueException{
+ if(s==null) return null;
Date r = tryParseString(s);
if(r==null)
throw new ValueException("Not a date '" + s + "'");
@@ -529,8 +530,8 @@
}
public Scheme getScheme(){ return scheme; }
- private String padZero(int n) { return padZero(""+n); }
- private String padZero(String s) {
+ static private String padZero(int n) { return padZero(""+n); }
+ static private String padZero(String s) {
if(s.length()==1) return "0"+s;
return s;
}
@@ -555,15 +556,16 @@
);
}
}
- public Instant asInstant() throws ValueException { return asInstant(null);
}
- public Instant asInstant(String timezone) throws ValueException {
- if(timezone==null) timezone = "UTC";
- TimeZone zone = TimeZone.getTimeZone(timezone);
- Calendar cal = asCalendar();
- int offset = zone.getOffset(cal.getTimeInMillis());
- cal.add(Calendar.MILLISECOND, offset);
- return new Instant(cal.getTimeInMillis());
- }
+ public long asMillisUTC() { return asMillis(TimeZone.getTimeZone("UTC")); }
+ public long asMillis(TimeZone timezone) {
+ Calendar cal = asCalendar();
+ int offset = timezone.getOffset(cal.getTimeInMillis());
+ cal.add(Calendar.MILLISECOND, offset);
+ return cal.getTimeInMillis();
+ }
+ public Instant asInstantUTC() { return new Instant(asMillisUTC()); }
+ public Instant asInstant(String timezone) { return
asInstant(TimeZone.getTimeZone(timezone)); }
+ public Instant asInstant(TimeZone timezone) { return new
Instant(asMillis(timezone)); }
public Date as(String scheme) throws ValueException { return
as(getScheme(scheme)); }
public Date as(Scheme scheme2) throws ValueException {
@@ -571,7 +573,7 @@
return scheme2.newDate(asCalendar());
}
- private Scheme getSchemeForPart(int partId){
+ static private Scheme getSchemeForPart(int partId){
switch(partId){
case PART_YEAR: return SCHEME_Y;
case PART_MONTH: return SCHEME_YM;
@@ -585,7 +587,7 @@
}
- private int getSuperiorPart(int partId){
+ static private int getSuperiorPart(int partId){
switch(partId){
case PART_QUARTER:
case PART_MONTH: return PART_YEAR;
@@ -593,6 +595,7 @@
case PART_HOUR: return PART_DAY;
case PART_MINUTE: return PART_HOUR;
case PART_WEEK: return PART_YEAR;
+ case PART_WEEKDAY: return PART_WEEK;
}
throw new Error(""+partId);
}
@@ -606,11 +609,17 @@
}else{
// appending a part - changes the scheme
if(hasPart(getSuperiorPart(part))){
- Scheme scheme1 = getSchemeForPart(part);
- int[] r = new int[parts.length+1];
- System.arraycopy(parts, 0, r, 0, parts.length);
- scheme1.setPart(part, r, value);
- return scheme1.newDate(r);
+ if(part==PART_WEEKDAY){
+ Calendar c = asCalendar();
+ c.set(Calendar.DAY_OF_WEEK, value);
+ return SCHEME_YMD.newDate(c);
+ }else{
+ Scheme scheme1 = getSchemeForPart(part);
+ int[] r = new int[parts.length+1];
+ System.arraycopy(parts, 0, r, 0, parts.length);
+ scheme1.setPart(part, r, value);
+ return scheme1.newDate(r);
+ }
}
}
throw new ValueException("Cannot derive "+scheme.name+" with date part
"+partName(part));
@@ -642,30 +651,38 @@
public Date addPeriod(int part, int amount) throws ValueException{
Calendar c = asCalendar();
- switch(part){
- case PART_MINUTE:
- c.add(Calendar.MINUTE, amount);
- break;
- case PART_HOUR:
- c.add(Calendar.HOUR_OF_DAY, amount);
- break;
- case PART_YEAR:
- c.add(Calendar.YEAR, amount);
- break;
- case PART_QUARTER:
- c.add(Calendar.MONTH, amount*3);
- break;
- case PART_MONTH:
- c.add(Calendar.MONTH, amount);
- break;
- case PART_DAY:
- c.add(Calendar.DAY_OF_MONTH, amount);
- break;
- case PART_WEEK:
- c.add(Calendar.WEEK_OF_YEAR, amount);
- break;
- default:
- throw new ValueException("Cannot add "+partName(part)+" to "+
scheme.name);
+ if(hasPart(part)){
+ switch(part){
+ case PART_MINUTE:
+ c.add(Calendar.MINUTE, amount);
+ break;
+ case PART_HOUR:
+ c.add(Calendar.HOUR_OF_DAY, amount);
+ break;
+ case PART_YEAR:
+ c.add(Calendar.YEAR, amount);
+ break;
+ case PART_QUARTER:
+ c.add(Calendar.MONTH, amount*3);
+ break;
+ case PART_MONTH:
+ c.add(Calendar.MONTH, amount);
+ break;
+ case PART_DAY:
+ c.add(Calendar.DAY_OF_MONTH, amount);
+ break;
+ case PART_WEEK:
+ c.add(Calendar.WEEK_OF_YEAR, amount);
+ break;
+ default:
+ throw new ValueException("Cannot add "+partName(part)+"
to "+ scheme.name);
+ }
+ }else{
+ if(part==PART_WEEK && hasPart(PART_DAY)){
+ c.add(Calendar.DAY_OF_MONTH, amount*7);
+ }else{
+ throw new ValueException("Cannot add "+partName(part)+"
to "+ scheme.name);
+ }
}
return correct(c, part);
}
Modified:
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Instant.java
===================================================================
---
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Instant.java
2016-10-30 01:43:08 UTC (rev 4894)
+++
branches/vexi3/org.vexi-library.value/src/main/java/org/vexi/value/Instant.java
2016-11-02 01:51:19 UTC (rev 4895)
@@ -118,7 +118,7 @@
return r.toString();
}
- private void formatTime(StringBuffer r, Calendar c){
+ static private void formatTime(StringBuffer r, Calendar c){
r.append(zeroPad(2,c.get(Calendar.HOUR_OF_DAY)));
r.append(":");
r.append(zeroPad(2,c.get(Calendar.MINUTE)));
@@ -166,4 +166,8 @@
public long millis() { return value; }
+
+ @Override public String toString() {
+ return format();
+ }
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Developer Access Program for Intel Xeon Phi Processors
Access to Intel Xeon Phi processor-based developer platforms.
With one year of Intel Parallel Studio XE.
Training and support from Colfax.
Order your platform today. http://sdm.link/xeonphi
_______________________________________________
Vexi-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vexi-svn