All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.rationalminds.util.Dictionary Maven / Gradle / Ivy

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package net.rationalminds.util;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Vaibhav Singh
 */
public class Dictionary {

    public static PredictionModelNode monthPredictionTree = new PredictionModelNode();
    public static PredictionModelNode weekPredictionTree = new PredictionModelNode();
    public static PredictionModelNode patternPredictionTree = new PredictionModelNode();
    public static PredictionModelNode timePredictionTree = new PredictionModelNode();
    
    public static final List WEEKDAY_FULL = new ArrayList();
    public static final List WEEKDAY_SHORT = new ArrayList();
    public static final List MONTH_FULL = new ArrayList();
    public static final List MONTH_SHORT = new ArrayList();
    public static final List PATTERN = new ArrayList();
    public static final List TIME_PATTERN = new ArrayList();
     
    public static final int MONTH_LITERAL = 1;
    public static final int WEEKDAY_LITERAL = 2;
    public static final int DIGIT_LITERAL = 3;
    public static final int THREE_DIGIT_LITERAL = 4;
    public static final int FOUR_DIGIT_LITERAL = 5;
    public static final int DATE_PHRASE = 6;
    public static final int NOT_DATE_LITERAL = -1;

    static {
        WEEKDAY_FULL.add("sunday");
        WEEKDAY_FULL.add("monday");
        WEEKDAY_FULL.add("tuesday");
        WEEKDAY_FULL.add("wednesday");
        WEEKDAY_FULL.add("thursday");
        WEEKDAY_FULL.add("friday");
        WEEKDAY_FULL.add("saturday");

        WEEKDAY_SHORT.add("sun");
        WEEKDAY_SHORT.add("mon");
        WEEKDAY_SHORT.add("tue");
        WEEKDAY_SHORT.add("wed");
        WEEKDAY_SHORT.add("thu");
        WEEKDAY_SHORT.add("fri");
        WEEKDAY_SHORT.add("sat");

        MONTH_FULL.add("january");
        MONTH_FULL.add("february");
        MONTH_FULL.add("march");
        MONTH_FULL.add("april");
        MONTH_FULL.add("may");
        MONTH_FULL.add("june");
        MONTH_FULL.add("july");
        MONTH_FULL.add("august");
        MONTH_FULL.add("september");
        MONTH_FULL.add("october");
        MONTH_FULL.add("november");
        MONTH_FULL.add("december");

        MONTH_SHORT.add("jan");
        MONTH_SHORT.add("feb");
        MONTH_SHORT.add("mar");
        MONTH_SHORT.add("apr");
        MONTH_SHORT.add("may");
        MONTH_SHORT.add("jun");
        MONTH_SHORT.add("jul");
        MONTH_SHORT.add("aug");
        MONTH_SHORT.add("sep");
        MONTH_SHORT.add("oct");
        MONTH_SHORT.add("nov");
        MONTH_SHORT.add("dec");

        PATTERN.add("DDDD*DD*DD");
        PATTERN.add("DDDD*D*DD");
        PATTERN.add("DDDD*DD*D");
        PATTERN.add("DDDD*D*D");
        PATTERN.add("DD*DD*DD");
        PATTERN.add("DD*D*DD");
        PATTERN.add("DD*DD*D");
        PATTERN.add("DD*D*D");
        PATTERN.add("DD*DD*DDDD");
        PATTERN.add("D*DD*DDDD");
        PATTERN.add("DD*D*DDDD");
        PATTERN.add("D*D*DDDD");
        PATTERN.add("DD*DD*DD");
        PATTERN.add("D*DD*DD");
        PATTERN.add("DD*D*DD");
        PATTERN.add("D*D*DD");
        PATTERN.add("DDDD*M*DD");
        PATTERN.add("DDDD*M*D");
        PATTERN.add("DD*M*DD");
        PATTERN.add("DD*M*D");
        PATTERN.add("DD*M*DDDD");
        PATTERN.add("D*M*DDDD");
        PATTERN.add("DD*M*DD");
        PATTERN.add("D*M*DD");
        PATTERN.add("M*DD*DDDD");
        PATTERN.add("M*D*DDDD");
        PATTERN.add("M*DD*DD");
        PATTERN.add("M*D*DD");
        
        TIME_PATTERN.add("DD:DD:DD");
        TIME_PATTERN.add("DD:DD:DD am");
        TIME_PATTERN.add("DD:DD:DD pm");
        TIME_PATTERN.add("DD:DD:DD.DDD");
        TIME_PATTERN.add("DD:DD:DD.DDD am");
        TIME_PATTERN.add("DD:DD:DD.DDD pm");
        
        monthPredictionTree.level = 0;
        monthPredictionTree.charcter = '0';
        
        patternPredictionTree.level=0;
        patternPredictionTree.charcter='0';
        
        timePredictionTree.level=0;
        timePredictionTree.charcter='0';
        
        
        buildTree(MONTH_FULL, monthPredictionTree);
        buildTree(MONTH_SHORT, monthPredictionTree);
        buildTree(PATTERN, patternPredictionTree);
        buildTree(TIME_PATTERN, timePredictionTree);
        
    }

    private static void buildTree(List itemList, PredictionModelNode parentNode) {
        for (String s : itemList) {
            PredictionModelNode parent = parentNode;
            parentNode.charcter=0;
            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                PredictionModelNode node = parent.getChild(c);
                if (node == null) {
                    PredictionModelNode child = new PredictionModelNode();
                    child.charcter = c;
                    if (i + 1 == s.length()) {
                        child.explictDateFragment = true;
                    }
                    parent.addChild(child);
                    parent = child;
                } else {
                     if (i + 1 == s.length()) {
                        node.explictDateFragment = true;
                    }
                    parent = node;
                }
            }
        }
    }

    public static void printTree(PredictionModelNode tree) {
        for (int i = 0; i < tree.level; i++) {
            System.out.print("+");
        }
        if (tree.explictDateFragment) {
            System.out.print(tree.charcter + "^");
        } else {
            System.out.print(tree.charcter);
        }

        System.out.println("");;
        if (tree != null && tree.childern != null) {
            for (PredictionModelNode child : tree.childern) {
                printTree(child);
            }
        }
    }
    
    

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy