in impl/src/main/java/org/apache/tuscany/sdo/helper/DataHelperImpl.java [196:265]
public synchronized String obtainSpecificFormat(String dateString)
{
StringBuffer formatBuffer = new StringBuffer();
int colonIndex = dateString.indexOf(':');
int hyphenIndex = dateString.indexOf('-');
if (dateString.startsWith("--"))
{
if (dateString.charAt(2) == '-') // starts with ---
formatBuffer.append("'---'dd");
else if (dateString.substring(2).indexOf('-') == -1)
formatBuffer.append("'--'MM");
else
formatBuffer.append("'--'MM'-'dd");
}
else if (colonIndex == 1 || colonIndex == 2)
{
if (dateString.indexOf('.') != -1)
formatBuffer.append("HH:mm:ss'.'S");
else if (dateString.substring(colonIndex + 1).indexOf(':') != -1)
formatBuffer.append("HH:mm:ss");
else
formatBuffer.append("HH:mm");
}
else if (hyphenIndex != -1)
{
if (dateString.substring(hyphenIndex + 1).indexOf('-') == -1)
formatBuffer.append("yyyy-MM");
else if (colonIndex != -1)
{
if (dateString.indexOf('.') != -1)
formatBuffer.append("yyyy-MM-dd'T'HH:mm:ss'.'S");
else if (dateString.substring(colonIndex + 1).indexOf(':') != -1)
formatBuffer.append("yyyy-MM-dd'T'HH:mm:ss");
else
formatBuffer.append("yyyy-MM-dd'T'HH:mm");
}
else
formatBuffer.append ("yyyy-MM-dd");
}
else if (colonIndex == -1) // indexOf('-') == -1
{
formatBuffer.append("yyyy");
}
else
return null;
// Determine if a Time Zone is included and needs to be parsed.
// ---------------------------------
// The only letter allowed in the above formats is 'T'.
// All times zones include at least one letter other than 'T'.
int i = 0;
boolean letterFound = false;
char currentChar;
while (i < dateString.length() && !letterFound)
{
currentChar = dateString.charAt(i);
if (Character.isLetter(currentChar) && currentChar != 'T')
letterFound = true;;
i++;
}
if (letterFound)
formatBuffer.append(" z");
return formatBuffer.toString();
}