com.itd.dbmrgdao.TestTime3.java Source code

Java tutorial

Introduction

Here is the source code for com.itd.dbmrgdao.TestTime3.java

Source

/*
 * 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 com.itd.dbmrgdao;

import com.itd.common.dao.EmployeeDropDownDao;
import com.itd.common.dao.GennericDao;
import com.itd.regis.db.entity.ScanData;
import com.itd.regis.db.entity.ScanDataKey;
import com.itd.regis.db.entity.ScanRule;
import com.itd.scan.dao.ScanDao;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author Administrator Test if employee punch either time-in or timeout will
 * credit 8:00 and 17:00
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring/config/BeanLocations.xml")
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)
@Transactional
public class TestTime3 {

    @Autowired
    ScanDao scanDao;

    @Autowired
    GennericDao<ScanData> gennericDao;

    @Ignore
    @org.junit.Test
    public void test1() {

        String sysid_sdate = "19870001520140710";

        String sysid = sysid_sdate.substring(0, 9);

        String sdate = new StringBuffer(sysid_sdate).substring(9);
        sdate = new StringBuffer(sdate).insert(sdate.length() - 2, "-").toString();
        sdate = new StringBuffer(sdate).insert(sdate.length() - 5, "-").toString();

        System.out.println(sysid);
        System.out.println(sdate);

        ScanData scanData = scanDao.findScanDataBySysId_Sdate(sysid, sdate);

        System.out.println(scanData);

    }

    @Ignore
    @org.junit.Test
    public void test() throws ParseException {
        String newTab = "\t";
        String[] sysidLine;

        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("Text File", "txt");
        chooser.setFileFilter(filter);
        chooser.showOpenDialog(null);
        File f = chooser.getSelectedFile();

        String fileName = f.getAbsolutePath();
        try {
            FileReader reader = new FileReader(fileName);
            BufferedReader br = new BufferedReader(reader);
            String strLine;

            String sysid = null, p1Start = null, p1End = null, p2Start = null, p2End = null, otStart = null,
                    otEnd = null;
            Date scdate = null;

            // read from select file
            while ((strLine = br.readLine()) != null) {
                String[] parts = strLine.split(" ");

                // check if not first record or sysid change will save in table scandata 
                if (sysid != null && !sysid.equals(parts[0])) {

                    // rule if whatever employee register will get standard hour 8 hrs
                    //                    if (p1Start != null || p2End != null) {
                    //                        ScanRule scanRule = scanDao.findScanRuleBySysId(sysid);
                    //                        p1Start = scanRule.getP1start();
                    //                        p2End = scanRule.getP2end();
                    //                    }

                    // set up data in entity
                    ScanDataKey scanDataKey = new ScanDataKey(sysid, scdate);
                    ScanData scanData = new ScanData(scanDataKey, "1985", p1Start, p1End, p2Start, p2End, otStart,
                            otEnd);
                    // remove old record (key is sysid and scdate)
                    gennericDao.remove(scanData);
                    gennericDao.create(scanData);

                    //clear 
                    p1Start = null;
                    p1End = null;
                    p2Start = null;
                    p2End = null;
                    otStart = null;
                    otEnd = null;

                }

                sysid = parts[0];
                scdate = new SimpleDateFormat("yyyyMMdd", Locale.US).parse(parts[1]);

                String timeString = new StringBuffer(parts[5]).insert(parts[5].length() - 2, ":").toString();

                if (parts[6].equals("01")) {
                    p1Start = CompareTime(p1Start, timeString, "01");
                } else {
                    p2End = CompareTime(p2End, timeString, "04");
                }

            }
            //last line

            //            if (p1Start != null || p2End != null) {
            //                ScanRule scanRule = scanDao.findScanRuleBySysId(sysid);
            //                p1Start = scanRule.getP1start();
            //                p2End = scanRule.getP2end();
            //            }

            ScanDataKey scanDataKey = new ScanDataKey(sysid, scdate);
            ScanData scanData = new ScanData(scanDataKey, "1985", p1Start, p1End, p2Start, p2End, otStart, otEnd);
            gennericDao.remove(scanData);
            gennericDao.create(scanData);

            br.close();

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }

    }

    protected static String CompareTime(String a, String b, String operator) throws ParseException {

        if (a == null) {
            return b;
        }

        SimpleDateFormat parser1 = new SimpleDateFormat("HH:mm");
        Date x = parser1.parse(a);
        Date y = parser1.parse(b);

        try {
            // The Magic happens here i only get the Time out of the Date Object
            SimpleDateFormat parser2 = new SimpleDateFormat("HH:mm");
            x = parser2.parse(parser2.format(x));
            y = parser2.parse(parser2.format(y));

        } catch (ParseException ex) {
            System.err.println(ex);

        }

        switch (operator) {
        case "01":
            return ((x.compareTo(y) <= 0) ? a : b);
        case "04":
            return ((x.compareTo(y) >= 0) ? a : b);
        default:
            throw new IllegalArgumentException("Operator " + operator + " not fould in control!");
        }
    }
}