JQuery Numeric Input Plug-In

Projede ihtiyaç oldu ve jQuery’nin kesin güzel bir numeric form input plug-ini vardır diye aradım ama istediğim gibi birşey bulamadım. Sonra birkaç araştırma/geliştirme/birleştirmeyle birlikte aşağıdaki plug-in ortaya çıktı. Kodlarını buradan download edebilirsiniz.

Secreenshot

Zebra S4M Label Design ve Java ile Yazdırma

Zebra Designer Uygulaması Açılır ;

1 2

Finish’e tıklanır ve Printer Seçimi Yapılır;

3 4 5 6 7

Finishe tıklanır ve dizayna geçilir.

8

 

Dizayn işlemi bittikten sonra ZPL kodlarını almak için File menüsünden Print seçeneğine tıklanır.

9

 

Print to file seçilip Print butonuna tıklanır ve oluşan .prn uzantılı dosyayı text editörde açıp ilk satır hariç alarak dizaynın ZPL kodunu elde etmiş olursunuz.

Sonrasında ise bu ZPL kodunu printere göndermek için aşağıdaki Java örneğini inceleyebilirsiniz.

 

PrintUtil.java

import java.io.BufferedReader;

import java.io.DataInputStream;

import java.io.InputStream;

import java.io.InputStreamReader;

 

import javax.print.Doc;

import javax.print.DocFlavor;

import javax.print.DocPrintJob;

import javax.print.PrintException;

import javax.print.PrintService;

import javax.print.PrintServiceLookup;

import javax.print.SimpleDoc;

import javax.print.attribute.PrintServiceAttribute;

import javax.print.attribute.standard.PrinterName;

 

import org.apache.commons.lang.StringUtils;

 

/**

* @author ddemirel [09/05/2013]

*/

public class PrintUtil {

public PrintUtil() {

super();

}

public void print(String data){

try {

PrintService psZebra = null;

String sPrinterName = null;

PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null);

for (int i = 0; i < services.length; i++) {

PrintServiceAttribute attr = services[i].getAttribute(PrinterName.class);

sPrinterName = ((PrinterName) attr).getValue();

if (sPrinterName.toLowerCase().indexOf(“s4m”) >= 0) {

psZebra = services[i];

break;

}

}

if (psZebra == null) {

System.out.println(“Zebra printer is not found.”);

return;

}

DocPrintJob job = psZebra.createPrintJob();

 

String s = data;//”^XA^FO100,40^BY3^B3,,30^FD123ABC^XZ”;

 

byte[] by = s.getBytes();

DocFlavor flavor = DocFlavor.BYTE_ARRAY.AUTOSENSE;

Doc doc = new SimpleDoc(by, flavor, null);

job.print(doc, null);

} catch (PrintException e) {

e.printStackTrace();

}

}

public String printBobinLabel(String barcode,String bobinNo,String basNo,String bitNo) throws Exception {

String data = readFile(“bobin_label_template”);

if(!StringUtils.isEmpty(data)){

data = data.replaceAll(“#BARCODE#”, barcode);

data = data.replaceAll(“#BOBIN_NO#”, bobinNo);

data = data.replaceAll(“#BAS_NO#”, basNo);

data = data.replaceAll(“#BIT_NO#”, bitNo);

print(data);

} else throw new Exception(“Bobin label template dosyasi okunamadi!”);

return null;

}

public String printKoliLabel(String barcode,String koliNo) throws Exception {

String data = readFile(“koli_label_template”);

if(!StringUtils.isEmpty(data)){

data = data.replaceAll(“#BARCODE#”, barcode);

data = data.replaceAll(“#KOLI_NO#”, koliNo);

print(data);

} else throw new Exception(“Koli label template dosyasi okunamadi!”);

return null;

}

private String readFile(String name) {

String linesTmp = “”;

try {

InputStream is = PrintUtil.class.getResourceAsStream(“/label_template/”+name+”.txt”);

DataInputStream in = new DataInputStream(is);

BufferedReader br = new BufferedReader(new InputStreamReader(in));

String strLine;

while ((strLine = br.readLine()) != null) {

linesTmp += strLine;

}

in.close();

} catch (Exception e) {

e.printStackTrace();

System.err.println(“Error: ” + e.getMessage());

}

return linesTmp;

}

}

 

Validation API için Custom Constraint Oluşturma

Girilen bilginin GSM numarası olup olmadığını basitçe anlayabilmek için aşağıdaki Constrainit kullanabiliriz;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import javax.validation.Constraint;

import javax.validation.Payload;

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy=SisGSMValidator.class)
public @interface SisGSM {
String message() default “Lütfen Geçerli Bir Cep Telefonu Giriniz!”;

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

}

————————————————————————————————-

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import org.apache.commons.lang.StringUtils;

public class SisGSMValidator implements ConstraintValidator<SisGSM, String>{
private SisGSM sisGSM;

@Override
public void initialize(SisGSM sisGSM) {
this.sisGSM = sisGSM;
}

@Override
public boolean isValid(String string, ConstraintValidatorContext constraintValidatorContext) {
if (!StringUtils.isEmpty(string) && string.length() >= 2) {
String number = string.substring(0, 2);
if(number.equals(“50”) ||
number.equals(“53”) ||
number.equals(“54”) ||
number.equals(“55”) )

return true;
else return false;
} else return true;

}
}

————————————–

Kullanımı;

public class TempEntity {

@SisGSM(message = “{Validation.gecerliGsm}”)
private String gsmNo;

………………..

………………..

}