Java 类org.joda.time.format.ISOPeriodFormat 实例源码
项目:warp10-platform
文件:ISODURATION.java
@Override
public Object apply(WarpScriptStack stack) throws WarpScriptException {
Object top = stack.pop();
if (!(top instanceof Long)) {
throw new WarpScriptException(getName() + " expects a number of time units (LONG) on top of the stack.");
}
long duration = ((Number) top).longValue();
StringBuffer buf = new StringBuffer();
ReadablePeriod period = new MutablePeriod(duration / Constants.TIME_UNITS_PER_MS);
ISOPeriodFormat.standard().getPrinter().printTo(buf, period, Locale.US);
stack.push(buf.toString());
return stack;
}
项目:ews-java-api
文件:EwsUtilities.java
/**
* Takes an xs:duration string as defined by the W3 Consortiums
* Recommendation "XML Schema Part 2: Datatypes Second Edition",
* http://www.w3.org/TR/xmlschema-2/#duration, and converts it into a
* System.TimeSpan structure This method uses the following approximations:
* 1 year = 365 days 1 month = 30 days Additionally, it only allows for four
* decimal points of seconds precision.
*
* @param xsDuration xs:duration string to convert
* @return System.TimeSpan structure
*/
public static TimeSpan getXSDurationToTimeSpan(String xsDuration) {
// TODO: Need to check whether this should be the equivalent or not
Matcher m = PATTERN_TIME_SPAN.matcher(xsDuration);
boolean negative = false;
if (m.find()) {
negative = true;
}
// Removing leading '-'
if (negative) {
xsDuration = xsDuration.replace("-P", "P");
}
Period period = Period.parse(xsDuration, ISOPeriodFormat.standard());
long retval = period.toStandardDuration().getMillis();
if (negative) {
retval = -retval;
}
return new TimeSpan(retval);
}
项目:ldp4j
文件:Literals.java
private static <T> DurationLiteral coherceDuration(T value) {
DurationLiteral duration=null;
if(value instanceof Duration) {
duration=of((Duration)value);
} else if(value instanceof javax.xml.datatype.Duration) {
duration=of((javax.xml.datatype.Duration)value);
} else if(value instanceof String) {
try {
Period period = ISOPeriodFormat.standard().parsePeriod((String)value);
duration=of(period.toStandardDuration());
} catch (Exception e) {
throw new DatatypeCohercionException(value,Datatypes.DURATION,e);
}
} else {
throw new DatatypeCohercionException(value,Datatypes.DURATION);
}
return duration;
}
项目:divconq
文件:PeriodHelper.java
@Override
public void init(CommonSchedule schedule, XElement config) {
super.init(schedule, config);
if (config == null)
return;
String period = config.getAttribute("Value");
if (!StringUtil.isEmpty(period))
try {
this.period = ISOPeriodFormat.standard().parsePeriod(period);
}
catch (Exception x) {
// TODO log
}
}
项目:Equella
文件:YoutubeUtils.java
public static String formatDuration(String duration)
{
Duration d = ISOPeriodFormat.standard().parsePeriod(duration).toStandardDuration();
long hours = d.getStandardHours();
Duration minusHours = d.minus(Duration.standardHours(hours));
long minutes = minusHours.getStandardMinutes();
long seconds = minusHours.minus(Duration.standardMinutes(minutes)).getStandardSeconds();
String format = hours > 0 ? "%3$d:%2$02d:%1$02d" : "%2$d:%1$02d";
return String.format(format, seconds, minutes, hours);
}
项目:QDrill
文件:VectorOutput.java
@Override
public void writeInterval(boolean isNull) throws IOException {
IntervalWriter intervalWriter = writer.interval();
if(!isNull){
final Period p = ISOPeriodFormat.standard().parsePeriod(parser.getValueAsString());
int months = DateUtility.monthsFromPeriod(p);
int days = p.getDays();
int millis = DateUtility.millisFromPeriod(p);
intervalWriter.writeInterval(months, days, millis);
}
}
项目:QDrill
文件:VectorOutput.java
@Override
public void writeInterval(boolean isNull) throws IOException {
IntervalWriter intervalWriter = writer.interval(fieldName);
if(!isNull){
final Period p = ISOPeriodFormat.standard().parsePeriod(parser.getValueAsString());
int months = DateUtility.monthsFromPeriod(p);
int days = p.getDays();
int millis = DateUtility.millisFromPeriod(p);
intervalWriter.writeInterval(months, days, millis);
}
}
项目:ThunderMusic
文件:OnlineTotalSearchTask.java
private int convertTime(String time) {
PeriodFormatter formatter = ISOPeriodFormat.standard();
Period p = formatter.parsePeriod(time);
Seconds s = p.toStandardSeconds();
return s.getSeconds();
}
项目:ThunderMusic
文件:YoutubeSearch.java
private int convertTime(String time) {
PeriodFormatter formatter = ISOPeriodFormat.standard();
Period p = formatter.parsePeriod(time);
Seconds s = p.toStandardSeconds();
return s.getSeconds();
}
项目:incubator-tamaya-sandbox
文件:FullStackIT.java
@Test
public void retrievePeriodValueFromConfiguration() {
Configuration configuration = ConfigurationProvider.getConfiguration();
MutablePeriod referenceValue = new MutablePeriod();
ISOPeriodFormat.standard().getParser().parseInto(referenceValue, "P1Y1M1W1DT1H1M1S", 0,
Locale.ENGLISH);
String periodAsString = configuration.get("periodValueA");
Period period = configuration.get("periodValueA", Period.class);
assertThat(periodAsString, equalTo("P1Y1M1W1DT1H1M1S"));
assertThat(period, equalTo(referenceValue.toPeriod()));
}
项目:drill
文件:VectorOutput.java
@Override
public void writeInterval(boolean isNull) throws IOException {
IntervalWriter intervalWriter = writer.interval();
if(!isNull){
final Period p = ISOPeriodFormat.standard().parsePeriod(parser.getValueAsString());
int months = DateUtility.monthsFromPeriod(p);
int days = p.getDays();
int millis = DateUtility.millisFromPeriod(p);
intervalWriter.writeInterval(months, days, millis);
}
}
项目:drill
文件:VectorOutput.java
@Override
public void writeInterval(boolean isNull) throws IOException {
IntervalWriter intervalWriter = writer.interval(fieldName);
if(!isNull){
final Period p = ISOPeriodFormat.standard().parsePeriod(parser.getValueAsString());
int months = DateUtility.monthsFromPeriod(p);
int days = p.getDays();
int millis = DateUtility.millisFromPeriod(p);
intervalWriter.writeInterval(months, days, millis);
}
}
项目:playground
文件:DurationSerializer.java
@Override
public void serialize(
final Duration duration,
final JsonGenerator jgen,
final SerializerProvider provider) throws IOException, JsonProcessingException
{
if (duration == null)
{
jgen.writeNull();
return;
}
final PeriodFormatter formatter = ISOPeriodFormat.standard();
jgen.writeString(duration.toPeriod().toString(formatter));
}
项目:playground
文件:DurationDeserializer.java
@Override
public Duration deserialize(final JsonParser parser, final DeserializationContext ctxt)
throws JsonParseException, IOException
{
final JsonToken jsonToken = parser.getCurrentToken();
if (jsonToken == JsonToken.VALUE_NUMBER_INT)
{
return new Duration(parser.getLongValue());
}
else if (jsonToken == JsonToken.VALUE_STRING)
{
final String str = parser.getText().trim();
if (str.length() == 0)
{
return null;
}
final PeriodFormatter formatter = ISOPeriodFormat.standard();
return formatter.parsePeriod(str).toStandardDuration();
}
throw ctxt.mappingException(Duration.class);
}
项目:TinyTravelTracker
文件:StringConverter.java
/**
* Extracts duration values from an object of this converter's type, and
* sets them into the given ReadWritableDuration.
*
* @param period period to get modified
* @param object the String to convert, must not be null
* @param chrono the chronology to use
* @return the millisecond duration
* @throws ClassCastException if the object is invalid
*/
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
String str = (String) object;
PeriodFormatter parser = ISOPeriodFormat.standard();
period.clear();
int pos = parser.parseInto(period, str, 0);
if (pos < str.length()) {
if (pos < 0) {
// Parse again to get a better exception thrown.
parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
}
throw new IllegalArgumentException("Invalid format: \"" + str + '"');
}
}
项目:astor
文件:StringConverter.java
/**
* Extracts duration values from an object of this converter's type, and
* sets them into the given ReadWritableDuration.
*
* @param period period to get modified
* @param object the String to convert, must not be null
* @param chrono the chronology to use
* @return the millisecond duration
* @throws ClassCastException if the object is invalid
*/
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
String str = (String) object;
PeriodFormatter parser = ISOPeriodFormat.standard();
period.clear();
int pos = parser.parseInto(period, str, 0);
if (pos < str.length()) {
if (pos < 0) {
// Parse again to get a better exception thrown.
parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
}
throw new IllegalArgumentException("Invalid format: \"" + str + '"');
}
}
项目:astor
文件:StringConverter.java
/**
* Extracts duration values from an object of this converter's type, and
* sets them into the given ReadWritableDuration.
*
* @param period period to get modified
* @param object the String to convert, must not be null
* @param chrono the chronology to use
* @return the millisecond duration
* @throws ClassCastException if the object is invalid
*/
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
String str = (String) object;
PeriodFormatter parser = ISOPeriodFormat.standard();
period.clear();
int pos = parser.parseInto(period, str, 0);
if (pos < str.length()) {
if (pos < 0) {
// Parse again to get a better exception thrown.
parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
}
throw new IllegalArgumentException("Invalid format: \"" + str + '"');
}
}
项目:super-csv
文件:ParsePeriodTest.java
@Before
public void setUp() {
formatter = ISOPeriodFormat.standard();
processor1 = new ParsePeriod();
processor2 = new ParsePeriod(formatter);
processorChain1 = new ParsePeriod(new IdentityTransform());
processorChain2 = new ParsePeriod(formatter, new IdentityTransform());
processors = Arrays.asList(processor1, processor2, processorChain1,
processorChain2);
}
项目:super-csv
文件:FmtPeriodTest.java
@Before
public void setUp() {
formatter = ISOPeriodFormat.standard();
processor1 = new FmtPeriod();
processor2 = new FmtPeriod(formatter);
processorChain1 = new FmtPeriod(new IdentityTransform());
processorChain2 = new FmtPeriod(formatter, new IdentityTransform());
processors = Arrays.asList(processor1, processor2, processorChain1,
processorChain2);
}
项目:ldp4j
文件:JodaDurationObjectFactory.java
@Override
public Duration fromString(String rawValue) {
try {
Period period = ISOPeriodFormat.standard().parsePeriod(rawValue);
return period.toStandardDuration();
} catch (Exception e) {
throw new ObjectParseException(e,Duration.class,rawValue);
}
}
项目:ldp4j
文件:XmlDurationObjectFactory.java
@Override
public Duration fromString(String rawValue) {
try {
Period period = ISOPeriodFormat.standard().parsePeriod(rawValue);
return TimeUtils.newInstance().from(period.toStandardDuration()).toDuration();
} catch (Exception e) {
throw new ObjectParseException(e,Duration.class,rawValue);
}
}
项目:idylfin
文件:StringConverter.java
/**
* Extracts duration values from an object of this converter's type, and
* sets them into the given ReadWritableDuration.
*
* @param period period to get modified
* @param object the String to convert, must not be null
* @param chrono the chronology to use
* @return the millisecond duration
* @throws ClassCastException if the object is invalid
*/
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
String str = (String) object;
PeriodFormatter parser = ISOPeriodFormat.standard();
period.clear();
int pos = parser.parseInto(period, str, 0);
if (pos < str.length()) {
if (pos < 0) {
// Parse again to get a better exception thrown.
parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
}
throw new IllegalArgumentException("Invalid format: \"" + str + '"');
}
}
项目:TinCanJava
文件:Result.java
@Override
public ObjectNode toJSONNode(TCAPIVersion version) {
ObjectMapper mapper = Mapper.getInstance();
ObjectNode node = mapper.createObjectNode();
if (this.score != null) {
node.put("score", this.getScore().toJSONNode(version));
}
if (this.success != null) {
node.put("success", this.getSuccess());
}
if (this.completion != null) {
node.put("completion", this.getCompletion());
}
if (this.duration != null) {
//
// ISOPeriodFormat includes milliseconds but the spec only allows
// hundredths of a second here, so get the normal string, then truncate
// the last digit to provide the proper precision
//
String shortenedDuration = ISOPeriodFormat.standard().print(this.getDuration()).replaceAll("(\\.\\d\\d)\\dS", "$1S");
node.put("duration", shortenedDuration);
}
if (this.response != null) {
node.put("response", this.getResponse());
}
if (this.extensions != null) {
node.put("extensions", this.getExtensions().toJSONNode(version));
}
return node;
}
项目:versemem-android
文件:StringConverter.java
/**
* Extracts duration values from an object of this converter's type, and
* sets them into the given ReadWritableDuration.
*
* @param period period to get modified
* @param object the String to convert, must not be null
* @param chrono the chronology to use
* @return the millisecond duration
* @throws ClassCastException if the object is invalid
*/
public void setInto(ReadWritablePeriod period, Object object, Chronology chrono) {
String str = (String) object;
PeriodFormatter parser = ISOPeriodFormat.standard();
period.clear();
int pos = parser.parseInto(period, str, 0);
if (pos < str.length()) {
if (pos < 0) {
// Parse again to get a better exception thrown.
parser.withParseType(period.getPeriodType()).parseMutablePeriod(str);
}
throw new IllegalArgumentException("Invalid format: \"" + str + '"');
}
}
项目:camunda-bpm-platform
文件:DueDateBusinessCalendar.java
public Date resolveDuedate(String duedate) {
try {
if (duedate.startsWith("P")){
return DateTimeUtil.now().plus(ISOPeriodFormat.standard().parsePeriod(duedate)).toDate();
}
return DateTimeUtil.parseDateTime(duedate).toDate();
}
catch (Exception e) {
throw LOG.exceptionWhileResolvingDuedate(duedate, e);
}
}
项目:QDrill
文件:BasicJsonOutput.java
@Override
public void writeInterval(Period value) throws IOException {
gen.writeString(value.toString(ISOPeriodFormat.standard()));
}
项目:quorrabot
文件:YouTubeAPIv3.java
public int[] GetVideoLength(String id) {
if (Quorrabot.enableDebugging) {
com.gmt2001.Console.out.println(">>>[DEBUG] YouTubeAPIv3.GetVideoLength Start id=" + id);
}
JSONObject j = GetData(request_type.GET, "https://www.googleapis.com/youtube/v3/videos?id=" + id + "&key=" + apikey + "&part=contentDetails");
if (j.getBoolean("_success")) {
if (j.getInt("_http") == 200) {
JSONArray a = j.getJSONArray("items");
if (a.length() > 0) {
JSONObject i = a.getJSONObject(0);
JSONObject cd = i.getJSONObject("contentDetails");
PeriodFormatter formatter = ISOPeriodFormat.standard();
Period d = formatter.parsePeriod(cd.getString("duration"));
//String d = cd.getString("duration").substring(2);
int h, m, s;
String hours = d.toStandardHours().toString().substring(2);
h = Integer.parseInt(hours.substring(0, hours.indexOf("H")));
String minutes = d.toStandardMinutes().toString().substring(2);
m = Integer.parseInt(minutes.substring(0, minutes.indexOf("M")));
String seconds = d.toStandardSeconds().toString().substring(2);
s = Integer.parseInt(seconds.substring(0, seconds.indexOf("S")));
/*
* if (d.contains("H")) { h =
* Integer.parseInt(d.substring(0, d.indexOf("H")));
*
* d = d.substring(0, d.indexOf("H")); }
*
* if (d.contains("M")) { m =
* Integer.parseInt(d.substring(0, d.indexOf("M")));
*
* d = d.substring(0, d.indexOf("M")); }
*
* s = Integer.parseInt(d.substring(0, d.indexOf("S")));
*/
if (Quorrabot.enableDebugging) {
com.gmt2001.Console.out.println(">>>[DEBUG] YouTubeAPIv3.GetVideoLength Success");
}
return new int[]{
h, m, s
};
} else {
if (Quorrabot.enableDebugging) {
com.gmt2001.Console.out.println(">>>[DEBUG] YouTubeAPIv3.GetVideoLength Fail");
}
return new int[]{
0, 0, 0
};
}
} else {
if (Quorrabot.enableDebugging) {
com.gmt2001.Console.out.println(">>>[DEBUG] YouTubeAPIv3.GetVideoLength Fail2");
}
return new int[]{
0, 0, 0
};
}
}
if (Quorrabot.enableDebugging) {
com.gmt2001.Console.out.println(">>>[DEBUG] YouTubeAPIv3.GetVideoLength Fail3");
}
return new int[]{
0, 0, 0
};
}
项目:dremio-oss
文件:BasicJsonOutput.java
@Override
public void writeInterval(Period value) throws IOException {
gen.writeString(value.toString(ISOPeriodFormat.standard()));
}
项目:warp10-platform
文件:DURATION.java
@Override
public Object apply(WarpScriptStack stack) throws WarpScriptException {
Object o = stack.pop();
if (!(o instanceof String)) {
throw new WarpScriptException(getName() + " expects an ISO8601 duration (a string) on top of the stack. See http://en.wikipedia.org/wiki/ISO_8601#Durations");
}
ReadWritablePeriod period = new MutablePeriod();
ISOPeriodFormat.standard().getParser().parseInto(period, o.toString(), 0, Locale.US);
Period p = period.toPeriod();
if (p.getMonths() != 0 || p.getYears() != 0) {
throw new WarpScriptException(getName() + " doesn't support ambiguous durations containing years or months, please convert those to days.");
}
Duration duration = p.toDurationFrom(new Instant());
stack.push(duration.getMillis() * Constants.TIME_UNITS_PER_MS);
return stack;
}
项目:drill
文件:BasicJsonOutput.java
@Override
public void writeInterval(Period value) throws IOException {
gen.writeString(value.toString(ISOPeriodFormat.standard()));
}
项目:oreva
文件:InternalUtil.java
public static LocalTime parseTime(String value) {
Period period = ISOPeriodFormat.standard().parsePeriod(value);
return new LocalTime(period.toStandardDuration().getMillis(), DateTimeZone.UTC);
}
项目:oreva
文件:InternalUtil.java
public static String formatTimeForXml(LocalTime localTime) {
return ISOPeriodFormat.standard().print(new Period(localTime.getMillisOfDay()));
}
项目:TinyTravelTracker
文件:StringConverter.java
/**
* Sets the value of the mutable interval from the string.
*
* @param writableInterval the interval to set
* @param object the String to convert, must not be null
* @param chrono the chronology to use, may be null
*/
public void setInto(ReadWritableInterval writableInterval, Object object, Chronology chrono) {
String str = (String) object;
int separator = str.indexOf('/');
if (separator < 0) {
throw new IllegalArgumentException("Format requires a '/' separator: " + str);
}
String leftStr = str.substring(0, separator);
if (leftStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
String rightStr = str.substring(separator + 1);
if (rightStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
DateTimeFormatter dateTimeParser = ISODateTimeFormat.dateTimeParser();
dateTimeParser = dateTimeParser.withChronology(chrono);
PeriodFormatter periodParser = ISOPeriodFormat.standard();
long startInstant = 0, endInstant = 0;
Period period = null;
Chronology parsedChrono = null;
// before slash
char c = leftStr.charAt(0);
if (c == 'P' || c == 'p') {
period = periodParser.withParseType(getPeriodType(leftStr)).parsePeriod(leftStr);
} else {
DateTime start = dateTimeParser.parseDateTime(leftStr);
startInstant = start.getMillis();
parsedChrono = start.getChronology();
}
// after slash
c = rightStr.charAt(0);
if (c == 'P' || c == 'p') {
if (period != null) {
throw new IllegalArgumentException("Interval composed of two durations: " + str);
}
period = periodParser.withParseType(getPeriodType(rightStr)).parsePeriod(rightStr);
chrono = (chrono != null ? chrono : parsedChrono);
endInstant = chrono.add(period, startInstant, 1);
} else {
DateTime end = dateTimeParser.parseDateTime(rightStr);
endInstant = end.getMillis();
parsedChrono = (parsedChrono != null ? parsedChrono : end.getChronology());
chrono = (chrono != null ? chrono : parsedChrono);
if (period != null) {
startInstant = chrono.add(period, endInstant, -1);
}
}
writableInterval.setInterval(startInstant, endInstant);
writableInterval.setChronology(chrono);
}
项目:YoutubeServerAPI
文件:YoutubeApiClient.java
/**
*
* @param response
* gets the detailed informations JSON produced eariler,
* containing all informations about a sinlge video
* @param youtubeTemp
* is a reference to the youtube object we try to fill in the for
* loop
*
* the method iterates over the details JSON and fills all fields
* @throws java.text.ParseException
*/
private YoutubeMetaData processingDetailedResults(JSONObject response,
YoutubeMetaData youtubeTemp) {
JSONArray responseItems = (JSONArray) response.get("items");
JSONObject responseItemsEntry = (JSONObject) responseItems.get(0);
JSONObject responseSnippet = (JSONObject) responseItemsEntry
.get("snippet");
JSONObject responseStatus = (JSONObject) responseItemsEntry
.get("status");
System.out.println("channelId "
+ responseSnippet.get("channelId").toString());
youtubeTemp.setChannelID(responseSnippet.get("channelId").toString());
youtubeTemp.setTitle(responseSnippet.get("title").toString());
System.out.println("title: " + responseSnippet.get("title").toString());
String tempDate = responseSnippet.get("publishedAt").toString();
DateFormat formatter = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss");
Date date = null;
try {
date = formatter.parse(tempDate);
} catch (java.text.ParseException e) {
e.printStackTrace();
return null;
}
youtubeTemp.setPublishedAt(date);
System.out.println("publishedAt: " + youtubeTemp.getPublishedAt());
JSONObject responseContentDetails = (JSONObject) responseItemsEntry
.get("contentDetails");
youtubeTemp.setDuration(responseContentDetails.get("duration")
.toString());
PeriodFormatter pf = ISOPeriodFormat.standard();
Period p = pf.parsePeriod(responseContentDetails.get("duration")
.toString());
Seconds s = p.toStandardSeconds();
System.out.println("durationInSecond: " + s.getSeconds());
youtubeTemp.setDurationInSeconds(s.getSeconds());
System.out.println("duration "
+ responseContentDetails.get("duration").toString());
JSONObject responseStatistics = (JSONObject) responseItemsEntry
.get("statistics");
youtubeTemp
.setViewCount(responseStatistics.get("viewCount").toString());
System.out.println("viewCount"
+ responseStatistics.get("viewCount").toString());
youtubeTemp
.setLikeCount(responseStatistics.get("likeCount").toString());
System.out.println("likeCount"
+ responseStatistics.get("likeCount").toString());
youtubeTemp.setDislikeCount(responseStatistics.get("dislikeCount")
.toString());
System.out.println("dislikeCount"
+ responseStatistics.get("dislikeCount").toString());
youtubeTemp.setCommentCount(responseStatistics.get("commentCount")
.toString());
System.out.println("commentCount"
+ responseStatistics.get("commentCount").toString());
boolean isCreativeCommon = false;
if (responseStatus.get("license").toString() == "creativeCommon")
isCreativeCommon = true;
youtubeTemp.setCreativeCommon(isCreativeCommon);
System.out.println("creativeCommon: " + youtubeTemp.isCreativeCommon());
System.out.println("------------------------------");
return youtubeTemp;
}
项目:astor
文件:StringConverter.java
/**
* Sets the value of the mutable interval from the string.
*
* @param writableInterval the interval to set
* @param object the String to convert, must not be null
* @param chrono the chronology to use, may be null
*/
public void setInto(ReadWritableInterval writableInterval, Object object, Chronology chrono) {
String str = (String) object;
int separator = str.indexOf('/');
if (separator < 0) {
throw new IllegalArgumentException("Format requires a '/' separator: " + str);
}
String leftStr = str.substring(0, separator);
if (leftStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
String rightStr = str.substring(separator + 1);
if (rightStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
DateTimeFormatter dateTimeParser = ISODateTimeFormat.dateTimeParser();
dateTimeParser = dateTimeParser.withChronology(chrono);
PeriodFormatter periodParser = ISOPeriodFormat.standard();
long startInstant = 0, endInstant = 0;
Period period = null;
Chronology parsedChrono = null;
// before slash
char c = leftStr.charAt(0);
if (c == 'P' || c == 'p') {
period = periodParser.withParseType(getPeriodType(leftStr)).parsePeriod(leftStr);
} else {
DateTime start = dateTimeParser.parseDateTime(leftStr);
startInstant = start.getMillis();
parsedChrono = start.getChronology();
}
// after slash
c = rightStr.charAt(0);
if (c == 'P' || c == 'p') {
if (period != null) {
throw new IllegalArgumentException("Interval composed of two durations: " + str);
}
period = periodParser.withParseType(getPeriodType(rightStr)).parsePeriod(rightStr);
chrono = (chrono != null ? chrono : parsedChrono);
endInstant = chrono.add(period, startInstant, 1);
} else {
DateTime end = dateTimeParser.parseDateTime(rightStr);
endInstant = end.getMillis();
parsedChrono = (parsedChrono != null ? parsedChrono : end.getChronology());
chrono = (chrono != null ? chrono : parsedChrono);
if (period != null) {
startInstant = chrono.add(period, endInstant, -1);
}
}
writableInterval.setInterval(startInstant, endInstant);
writableInterval.setChronology(chrono);
}
项目:astor
文件:StringConverter.java
/**
* Sets the value of the mutable interval from the string.
*
* @param writableInterval the interval to set
* @param object the String to convert, must not be null
* @param chrono the chronology to use, may be null
*/
public void setInto(ReadWritableInterval writableInterval, Object object, Chronology chrono) {
String str = (String) object;
int separator = str.indexOf('/');
if (separator < 0) {
throw new IllegalArgumentException("Format requires a '/' separator: " + str);
}
String leftStr = str.substring(0, separator);
if (leftStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
String rightStr = str.substring(separator + 1);
if (rightStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
DateTimeFormatter dateTimeParser = ISODateTimeFormat.dateTimeParser();
dateTimeParser = dateTimeParser.withChronology(chrono);
PeriodFormatter periodParser = ISOPeriodFormat.standard();
long startInstant = 0, endInstant = 0;
Period period = null;
Chronology parsedChrono = null;
// before slash
char c = leftStr.charAt(0);
if (c == 'P' || c == 'p') {
period = periodParser.withParseType(getPeriodType(leftStr)).parsePeriod(leftStr);
} else {
DateTime start = dateTimeParser.parseDateTime(leftStr);
startInstant = start.getMillis();
parsedChrono = start.getChronology();
}
// after slash
c = rightStr.charAt(0);
if (c == 'P' || c == 'p') {
if (period != null) {
throw new IllegalArgumentException("Interval composed of two durations: " + str);
}
period = periodParser.withParseType(getPeriodType(rightStr)).parsePeriod(rightStr);
chrono = (chrono != null ? chrono : parsedChrono);
endInstant = chrono.add(period, startInstant, 1);
} else {
DateTime end = dateTimeParser.parseDateTime(rightStr);
endInstant = end.getMillis();
parsedChrono = (parsedChrono != null ? parsedChrono : end.getChronology());
chrono = (chrono != null ? chrono : parsedChrono);
if (period != null) {
startInstant = chrono.add(period, endInstant, -1);
}
}
writableInterval.setInterval(startInstant, endInstant);
writableInterval.setChronology(chrono);
}
项目:DJBot
文件:YoutubeFetcher.java
public FetchResult fetchSongData(String youtubeId) {
try {
JSONObject obj = getJsonForYoutubeId(youtubeId);
JSONArray items = obj.getJSONArray("items");
if(items.length() == 0) {
return new FetchResult("I couldn't find info about that video on youtube");
}
JSONObject item = items.getJSONObject(0);
JSONObject snippet = item.getJSONObject("snippet");
JSONObject status = item.getJSONObject("status");
JSONObject contentDetails = item.getJSONObject("contentDetails");
String title = snippet.getString("title");
String durationStr = contentDetails.getString("duration");
//format is like "PT5M30S" for 5 minutes 30 seconds
Period p = ISOPeriodFormat.standard().parsePeriod(durationStr);
int durationSeconds = p.toStandardSeconds().getSeconds();
if (! countryIsAllowed(contentDetails)) {
return new FetchResult("that video can't be played in the streamer's country");
}
if(!("public".equals(status.getString("privacyStatus")))) {
return new FetchResult("that video is private");
}
if(!status.getBoolean("embeddable")) {
return new FetchResult("that video is not allowed to be embedded");
}
if(durationSeconds == 0) {
return new FetchResult("that video has length 0 (probably it's a live stream)");
}
SongEntry newSong = new SongEntry(title, youtubeId, -1, null, new Date().getTime(), durationSeconds, false, 0, SiteIds.YOUTUBE);
return new FetchResult(newSong);
} catch (Exception e) {
logger.error("Problem with youtube request \"" + youtubeId + "\"", e);
return new FetchResult("I had an error while trying to add that song");
}
}
项目:DJBot
文件:YoutubeFetcher.java
public FetchResult youtubeSearch(String sender, String q, DjService dj) {
try {
String searchUrl = "https://www.googleapis.com/youtube/v3/search?videoEmbeddable=true&part=id&q=" + URLEncoder.encode(q, "UTF-8") + "&type=video®ionCode=" + conf.getUserCountryCode() + "&maxResults=5&key=" + conf.getYoutubeAccessToken();
GetMethod get;
HttpClient client = new HttpClient();
get = new GetMethod(searchUrl);
int errcode = client.executeMethod(get);
if (errcode != 200) {
logger.info("Song search error: got code " + errcode + " from " + searchUrl);
return new FetchResult("I couldn't run that search properly on youtube");
}
String resp = IOUtils.toString(get.getResponseBodyAsStream(), "utf-8");
if (resp == null) {
logger.info("Couldn't get detail at " + searchUrl);
return new FetchResult("I couldn't run that search properly on youtube");
}
JSONObject searchObj = new JSONObject(resp);
JSONArray searchItems = searchObj.getJSONArray("items");
if (searchItems.length() == 0) {
logger.info("Empty 'items' array in youtube response for url " + searchUrl);
return new FetchResult("that search gave no results");
}
for (int i = 0; i < searchItems.length(); ++i) {
JSONObject resultItem = searchItems.getJSONObject(i);
JSONObject id = resultItem.getJSONObject("id");
String videoId = id.getString("videoId");
JSONObject obj = getJsonForYoutubeId(videoId);
JSONArray items = obj.getJSONArray("items");
if (items.length() == 0) {
continue;
}
JSONObject item = items.getJSONObject(0);
JSONObject snippet = item.getJSONObject("snippet");
JSONObject status = item.getJSONObject("status");
JSONObject contentDetails = item.getJSONObject("contentDetails");
String title = snippet.getString("title");
String durationStr = contentDetails.getString("duration");
//format is like "PT5M30S" for 5 minutes 30 seconds
Period p = ISOPeriodFormat.standard().parsePeriod(durationStr);
int durationSeconds = p.toStandardSeconds().getSeconds();
if (!countryIsAllowed(contentDetails)) {
continue;
}
if (!("public".equals(status.getString("privacyStatus")))) {
continue;
}
if (!status.getBoolean("embeddable")) {
continue;
}
if (durationSeconds == 0) {
continue;
}
SongEntry newSong = new SongEntry(title, videoId, -1, sender, new Date().getTime(), durationSeconds, false, 0, SiteIds.YOUTUBE);
if (dj.getPossiblePolicyFailureReason(newSong, sender) != null) {
continue;
}
return new FetchResult(newSong);
}
//if we get here, it means none of the songs in the results were okay
return new FetchResult("I didn't find an appropriate video early enough in the search results");
} catch (Exception e) {
logger.error("Problem with youtube search \"" + q + "\"", e);
return new FetchResult("I had an error while trying to add that song");
}
}
项目:ldp4j
文件:Literals.java
public static DurationLiteral of(javax.xml.datatype.Duration duration) {
checkNotNull(duration,DURATION_CANNOT_BE_NULL);
Period period = ISOPeriodFormat.standard().parsePeriod(duration.toString());
return new ImmutableDurationLiteral(period.toStandardDuration(),Datatypes.DURATION);
}
项目:idylfin
文件:StringConverter.java
/**
* Sets the value of the mutable interval from the string.
*
* @param writableInterval the interval to set
* @param object the String to convert, must not be null
* @param chrono the chronology to use, may be null
*/
public void setInto(ReadWritableInterval writableInterval, Object object, Chronology chrono) {
String str = (String) object;
int separator = str.indexOf('/');
if (separator < 0) {
throw new IllegalArgumentException("Format requires a '/' separator: " + str);
}
String leftStr = str.substring(0, separator);
if (leftStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
String rightStr = str.substring(separator + 1);
if (rightStr.length() <= 0) {
throw new IllegalArgumentException("Format invalid: " + str);
}
DateTimeFormatter dateTimeParser = ISODateTimeFormat.dateTimeParser();
dateTimeParser = dateTimeParser.withChronology(chrono);
PeriodFormatter periodParser = ISOPeriodFormat.standard();
long startInstant = 0, endInstant = 0;
Period period = null;
Chronology parsedChrono = null;
// before slash
char c = leftStr.charAt(0);
if (c == 'P' || c == 'p') {
period = periodParser.withParseType(getPeriodType(leftStr)).parsePeriod(leftStr);
} else {
DateTime start = dateTimeParser.parseDateTime(leftStr);
startInstant = start.getMillis();
parsedChrono = start.getChronology();
}
// after slash
c = rightStr.charAt(0);
if (c == 'P' || c == 'p') {
if (period != null) {
throw new IllegalArgumentException("Interval composed of two durations: " + str);
}
period = periodParser.withParseType(getPeriodType(rightStr)).parsePeriod(rightStr);
chrono = (chrono != null ? chrono : parsedChrono);
endInstant = chrono.add(period, startInstant, 1);
} else {
DateTime end = dateTimeParser.parseDateTime(rightStr);
endInstant = end.getMillis();
parsedChrono = (parsedChrono != null ? parsedChrono : end.getChronology());
chrono = (chrono != null ? chrono : parsedChrono);
if (period != null) {
startInstant = chrono.add(period, endInstant, -1);
}
}
writableInterval.setInterval(startInstant, endInstant);
writableInterval.setChronology(chrono);
}