package com.topsun.posclient.common.core;
import java.util.HashMap;
import java.util.Map;
public class BarcodeKeyboardListener {
private StringBuilder barcode;
private long start;
private Map<Integer,Integer> keyToLetter=new HashMap<Integer,Integer>();
private static int maxScanTime=300;
private static int barcodeMinLength=6;
public BarcodeKeyboardListener(){
keyToLetter.put(48,0);
keyToLetter.put(49,1);
keyToLetter.put(50,2);
keyToLetter.put(51,3);
keyToLetter.put(52,4);
keyToLetter.put(53,5);
keyToLetter.put(54,6);
keyToLetter.put(55,7);
keyToLetter.put(56,8);
keyToLetter.put(57,9);
}
public void onKey(int keyCode) {
Integer letter=keyToLetter.get(keyCode);
if(barcode==null){
barcode=new StringBuilder();
start=System.currentTimeMillis();
}
long cost=System.currentTimeMillis()-start;
if(cost > maxScanTime){
barcode=new StringBuilder();
start=System.currentTimeMillis();
}
if (keyCode >= 48 && keyCode <= 57) {
barcode.append(letter);
}
if (keyCode == 13) {
if(barcode.length() >= barcodeMinLength && cost < maxScanTime){
cost=System.currentTimeMillis()-start;
System.out.println(barcode.toString());
BarcodeListenetManager.getInstance().fireChange(barcode.toString());
BarcodeBuffer.product(barcode.toString());
}
barcode=new StringBuilder();
}
}
}