Thursday, August 8, 2013

Checking of Broswer type on ViewModel in ZK Framework.

private String checkBrowserType() {
        String browserType = "";
        String userAgent = Executions.getCurrent().getUserAgent();
        if (userAgent != null && userAgent.length() > 0) {
            if (userAgent.contains("MSIE")) {
                browserType = "IE";
            } else if (userAgent.contains("Firefox")) {
                browserType = "Mozilla";
            } else if (userAgent.contains("Chrome")) {
                browserType = "Chrome";
            }
        }
        return browserType;
    }

Wednesday, August 7, 2013

Copy data into clipboard in ZK Framework using java script

  <zk xmlns:x="xhtml" xmlns:zk="zk">
    <window apply="org.zkoss.bind.BindComposer"
        viewModel="@id('vm') @init('com.test.TestViewModel')">
       <script type="text/javascript">
            <![CDATA[

            function f_Copy_ClipBoard() {

            var firstNumber = document.getElementById("FirstNumber").value;
            var secondNumber = document.getElementById("SecondNumber").value;
           
            if (window.clipboardData) {
            window.clipboardData.setData("Text", firstNumber+" And "+secondNumber);
               }
            }
            ]]>
           </script>
        <x:table width="100%">
            <x:tr>
                <x:td>
                    <label value="First Number" />
                </x:td>
                <x:td>
                    <x:input id="FirstNumber"
                        value="@bind(vm.FirstNumber)" />
                </x:td>
                <x:td>
                    <label value="Second Number" />
                </x:td>
                <x:td>
                    <x:input id="SecondNumber"
                        value="@bind(vm.SecondNumber)" />
                </x:td>
                <x:td>
                    <x:input type="button" value="Sum"
                        onclick="f_Copy_ClipBoard();" />
                </x:td>
            </x:tr>
        </x:table>
    </window>
</zk>

  In TestViewModel.java create below two attributes.

    private String FirstNumber;
    private String SecondNumber;

    public String getFirstNumber() {
        return FirstNumber;
    }

    public void setFirstNumber(String firstNumber) {
        FirstNumber = firstNumber;
    }

    public String getSecondNumber() {
        return SecondNumber;
    }

    public void setSecondNumber(String secondNumber) {
        SecondNumber = secondNumber;
    }

Note: The clipboardData object is only supported by Internet Explorer.

Tuesday, August 6, 2013

State Design Pattern

State Design Pattern: The State Design Pattern is a type of behavioral design pattern. The state design pattern is for an object to change its behavior depending on its state.

Here's an example of state design pattern.

ImportType.java

interface ImportType {

public void excecuteImportProcess(ImportController importController);
}

CustomerTypeImport.java


public class CustomerTypeImport implements ImportType {
public void excecuteImportProcess(ImportController importController) {
System.out.println("Customer");
}
}

PeopleTypeImport.java

public class PeopleTypeImport implements ImportType {
public void excecuteImportProcess(ImportController importController) {
System.out.println("People");
}
}

ImportController.java

 public class ImportController {

private ImportType importType;

public ImportController(ImportType importType) {
this.importType = importType;
}

public void setImportType(ImportType importType) {
this.importType = importType;
}

public void handleImportProcess() {
importType.excecuteImportProcess(this);
}
}

ImportDemo.java


public class ImportDemo {

public static void main(String[] args) {

ImportController importController = new ImportController(new CustomerTypeImport());
importController.handleImportProcess();

ImportController importControllerNew = new ImportController(new PeopleTypeImport());
importControllerNew.handleImportProcess();
}
}

The ImportDemo class presents the state design pattern. First of all we have created an object of ImportController with a CustomerTypeImport object then called handleImportProcess() method on this ImportController object. Again, we have created an object of ImportController with a PeopleTypeImport object then called handleImportProcess() method on this ImportController object.

When you will see the out put of above demo then you can see the ImportController object's behavior is different. Behavior of an ImportController object depends upon the state of ImportType.

The console output of executing ImportDemo is shown here.

Customer
People

Thursday, July 4, 2013

4 Principles of OOPS

There are four principle concepts upon which object oriented design and programming rest. 
Here is the four principles:

  • Abstraction
  • In Java Abstration is use to show only the relevant features of a class to the user of that class and hide certain details which is not essential for the user of that class.

    In java Abstraction can be achieve by using Abstract class or Interface.
  • Polymorphism
  • Inheritance
  • Encapsulation