com.itd.dbmrgdao.TestTime7.java Source code

Java tutorial

Introduction

Here is the source code for com.itd.dbmrgdao.TestTime7.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.ArrayList;
import java.util.Date;
import java.util.List;
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 TestTime7 {

    @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, scdate = null, p1Start = null, p1End = null, p2Start = null, p2End = null,
                    otStart = null, otEnd = null;
            String scode = "1985";
            StringBuilder insertSQL = new StringBuilder(
                    "INSERT INTO scandata(sc_sysid,sc_scode,scdate,p1start,p2end) VALUES ");

            StringBuilder deleteSQL = new StringBuilder("DELETE FROM scandata WHERE (sc_sysid,scdate) IN (");

            // read from select file
            for (strLine = br.readLine(); strLine != null; strLine = br.readLine()) {
                System.out.println(strLine);
            }

            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])) {

                    deleteSQL = deleteSQL.append(" ('").append(sysid).append("','").append(scdate).append("'),");

                    insertSQL = insertSQL.append(" ('").append(sysid).append("','").append(scode).append("','")
                            .append(scdate).append("','").append(p1Start).append("','").append(p2End).append("'),");

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

                }

                //clear 
                sysid = parts[0];
                scdate = new StringBuffer(parts[1]).insert(parts[1].length() - 2, "-").toString();
                scdate = new StringBuffer(scdate).insert(scdate.length() - 5, "-").toString();

                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");
                }
            }

            deleteSQL = deleteSQL.append(" ('").append(sysid).append("','").append(scdate).append("'))");

            insertSQL = insertSQL.append(" ('").append(sysid).append("','").append(scode).append("','")
                    .append(scdate).append("','").append(p1Start).append("','").append(p2End).append("')");

            scanDao.executeSQL(deleteSQL.toString());

            scanDao.executeSQL(insertSQL.toString());

            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!");
        }
    }
}