Click here to watch in Youtube : https://www.youtube.com/watch?v=sBx4bw1T4Ek
Click the below Image to Enlarge
Interpreter Design pattern - Implementation [Date] |
Interpreter Design pattern - Implementation [Date] - Class Diagram |
import java.util.Date;
public class Context
{
public String expression;
public Date date;
public String getExpression()
{
return expression;
}
public void setExpression( String expression )
{
this.expression = expression;
}
public Date getDate()
{
return date;
}
public void setDate( Date date )
{
this.date = date;
}
}
AbstractExpression.java
public abstract class AbstractExpression
{
public abstract void evaluate( Context context );
}
DayExpression.java
import java.util.Date;
public class DayExpression extends AbstractExpression
{
@Override
public void evaluate( Context context )
{
String expression = context.getExpression();
Date date = context.getDate();
Integer day = new Integer(date.getDate());
String tempExpression = expression.replaceAll("DD", day.toString());
context.setExpression(tempExpression);
}
}
MonthExpression.java
import java.util.Date;
public class MonthExpression extends AbstractExpression
{
@Override
public void evaluate( Context context )
{
String expression = context.getExpression();
Date date = context.getDate();
Integer month = new Integer(date.getMonth()+1);
String tempExpression = expression.replaceAll("MM", month.toString());
context.setExpression(tempExpression);
}
}
YearExpression.java
import java.util.Date;
public class YearExpression extends AbstractExpression
{
@Override
public void evaluate( Context context )
{
String expression = context.getExpression();
Date date = context.getDate();
Integer year = new Integer(date.getYear() + 1900);
String tempExpression = expression.replaceAll("YYYY", year.toString());
context.setExpression(tempExpression);
}
}
Client.java
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;
public class Client
{
public static void main( String[] args )
{
System.out.println("Please select the Expression : 'MM-DD-YYYY' or 'YYYY-MM-DD'");
Scanner scanner = new Scanner(System.in);
String expression = scanner.next();
Context context = new Context();
context.setExpression(expression);
context.setDate(new Date());
ArrayList<AbstractExpression> expressionOrderList = getExpressionOrder(context);
System.out.println("Input : " + context.getExpression() + " : " + new Date());
for( AbstractExpression abstractExpression : expressionOrderList )
{
abstractExpression.evaluate(context);
System.out.println(abstractExpression.getClass().getName() + " Evaluated : "
+ context.getExpression());
}
System.out.println("Output : " + context.getExpression());
}
private static ArrayList<AbstractExpression> getExpressionOrder( Context context )
{
ArrayList<AbstractExpression> expressionOrderList = new ArrayList<AbstractExpression>();
String[] strArray = context.getExpression().split("-");
for( String string : strArray )
{
if( string.equalsIgnoreCase("MM") )
{
expressionOrderList.add(new MonthExpression());
}
else if( string.equalsIgnoreCase("DD") )
{
expressionOrderList.add(new DayExpression());
}
else
{
expressionOrderList.add(new YearExpression());
}
}
return expressionOrderList;
}
}
Output
Please select the Expression : 'MM-DD-YYYY' or 'YYYY-MM-DD'
MM-DD-YYYY
Input : MM-DD-YYYY : Sun Feb 09 22:23:45 IST 2014
MonthExpression Evaluated : 2-DD-YYYY
DayExpression Evaluated : 2-9-YYYY
YearExpression Evaluated : 2-9-2014
Output : 2-9-2014
Please select the Expression : 'MM-DD-YYYY' or 'YYYY-MM-DD'
YYYY-MM-DD
Input : YYYY-MM-DD : Sun Feb 09 22:23:55 IST 2014
YearExpression Evaluated : 2014-MM-DD
MonthExpression Evaluated : 2014-2-DD
DayExpression Evaluated : 2014-2-9
Output : 2014-2-9
No comments:
Post a Comment