Putting the Codes into Gear

Now, let's put these codes into gear.

  • First we create a Java project, say, wineco:

    New Wineco Java Project

  • Add the ASN.1 runtime to the build path of the Java project. Click here to download the latest ASN.1 Java Runtime for Java SE.

    Add ASN.1 runtime to build path

  • Copy the generated Java code from project Wineco-protocol:

    Copy Generated Code to project

  • Now, you can write your code to wire the protocol, here is a simple test code:

    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.util.Date;
    import java.util.Vector;
    
    import Wineco_returns_protocol.Report_item;
    import Wineco_returns_protocol.Return_of_sales;
    import Wineco_returns_protocol.Return_of_sales_Reason_for_delay;
    import Wineco_returns_protocol.Return_of_sales_Time_and_date_of_report;
    import Wineco_returns_protocol.Return_of_sales_Version;
    
    
    public class Test {
    
    	public static void main(String[] args) throws IOException {
    		
    		Return_of_sales return_of_sales = new Return_of_sales();
    		
    		return_of_sales.version = new Return_of_sales_Version(new byte[1],(byte)6);
    		return_of_sales.version.setVersion1();
    		
    		return_of_sales.no_of_days_reported_on = 7;
    		
    		return_of_sales.time_and_date_of_report = 
    			new Return_of_sales_Time_and_date_of_report(
    					Return_of_sales_Time_and_date_of_report.four_digit_yearChosen, new Date());
    		
    		return_of_sales.reason_for_delay = Return_of_sales_Reason_for_delay.other;
    		
    		return_of_sales.additional_information = new Vector<String>();
    		
    		return_of_sales.sales_data = new Vector<Report_item>();
    		Report_item report_item;
    		report_item = new Report_item();
    		report_item.item = new int[]{1, 2, 3, 4};
    		report_item.item_description = "item1";
    		report_item.bar_code_data = new byte[]{3, 5, 54, 54};
    		report_item.ran_out_of_stock = false;
    		report_item.min_stock_level = 100.0;
    		report_item.max_stock_level = 500.0;
    		report_item.average_stock_level = 250.0;
    		return_of_sales.sales_data.add(report_item);
    		
    		report_item = new Report_item();
    		report_item.item = new int[]{1, 2, 3, 5};
    		report_item.item_description = "item2";
    		report_item.bar_code_data = new byte[]{63, 35, 3, 45};
    		report_item.ran_out_of_stock = true;
    		report_item.min_stock_level = 255.0;
    		report_item.max_stock_level = 500.0;
    		report_item.average_stock_level = 256.0;
    		return_of_sales.sales_data.add(report_item);
    		
    		ByteArrayOutputStream bos = new ByteArrayOutputStream();
    		return_of_sales.ber_encode(bos);
    		
    		ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
    		Return_of_sales return_of_sales1 = Return_of_sales.ber_decode(bis);
    		
    		System.out.println("Equality: "+return_of_sales.equals(return_of_sales1));
    	}
    
    }