Parsing string, date and time from a user defined sentence in android application

  • Replies:3
  • Answered
Vishnupriya Raju
  • Forum posts: 8

Feb 24, 2016, 8:27:42 AM via Website

I am developing an android application in which i want to parser the date, time and string that is what Natty (Date Parser) do is exactly needed for me. I have tried in eclipse IDE. I have manually added the following jar files.

antlr-2.7.7.jar
antlr-runtime-3.2.jar
backport-util-concurrent-3.1.jar
commons-codec-1.5.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
ical4j-1.0.2.jar
stringtemplate-3.2.jar

And i have followed the instructions given in Natty website. That is in POM file,i have added the dependency as

<dependency>; 
  <groupId>com.joestelmach</groupId>
  <artifactId>natty</artifactId>
  <version>0.11</version>
</dependency>

and added the following in main java file.

import com.joestelmach.natty.*;
Parser parser = new Parser();
List groups = parser.parse("the day before next thursday");
for(DateGroup group:groups) {
List dates = group.getDates();
int line = group.getLine();
int column = group.getPosition();
String matchingValue = group.getText();
String syntaxTree = group.getSyntaxTree().toStringTree();
Map parseMap = group.getParseLocations();
boolean isRecurreing = group.isRecurring();
Date recursUntil = group.getRecursUntil();
}

I have imported three libraries.

import java.util.Date;
import java.util.List;
import java.util.Map;

Now i am getting an error in this line.

for(DateGroup group:groups)

Error: Type mismatch: cannot convert from element type Object to DateGroup.

Please suggest me some solutions for this.

I have added the Parser class under onCreateOptionsMenu function.

Or please suggest me some other solutions for me to parse the date,time and string from a sentence. For example, consider the following sentence "Lets go for lunch on July 17th 2016 at 1 pm", from this i need to extract Date:17th July 2016, time 1 pm and string : Lets go for lunch.

Reply
itterN
  • Forum posts: 12

Feb 26, 2016, 12:49:34 AM via Website

Parser's parse method returns:

List<DateGroup>

In your example above you've dropped the type information (I see the example on natty's website does the same; the compiler they were using must ignore the implicit type cast there). The following should work (note - not tested):

List<DateGroup> groups = parser.parse("the day before next thursday");
for(DateGroup group:groups) {
    //...
}

— modified on Feb 26, 2016, 12:50:51 AM

Vishnupriya Raju

Reply
Vishnupriya Raju
  • Forum posts: 8

Feb 26, 2016, 6:13:44 AM via Website

Thank you so much for your suitable answer and timely help.

I am wondering if you can, please give suggestion for the following warning.

In the same coding i am getting the warning as "List is a raw type. References to generic type List should be parameterized"

And also i want to display the date in Edittext.

Reply
Vishnupriya Raju
  • Forum posts: 8

Feb 26, 2016, 6:32:56 AM via Website

Thank you so much for effort. I got my application worked.

Reply