Saturday, November 8, 2014

Writing comments on Script - JavaScript/Angular

/*global define*/

(function () {

    /**
     * @ngdoc load configuration urls
     * @name cat.CONFIG
     */

    // force script to be run in strict mode
    'use strict';

    // define dependencies
    var dependencies = ['cat'];

    define(dependencies, function (CatModule) {
        // define constant values for configuration
        var CONFIG = {
            // base url for catbor applcation
            'BASE': '/cat-application/catbor/',
            // root url for services
            'SERVICES': '/cat-presentation/services/'
        };

        // add defined congiguration constants to the module
        CatModule.constant('CONFIG', CONFIG);

    });

}());

=========
/*global define*/

(function () {

    /**
     * @ngdoc load header controller for module
     * @name cat.HeaderCtrl
     */

    // force script to be run in strict mode
    'use strict';

    // define dependencies
    var dependencies = ['cat',
                        'components/search/search-controller',
                        'common/js/services/rest-client',
                        'common/js/services/session-service'];

    define(dependencies, function (CatModule) {

        /**
         * @ngdoc Initialize header controller.
         * @name cat.HeaderCtrl
         * @requires RestClient, SessionService
         *
         * @description
         * Header controller for the UI header
         */
        function HeaderCtrl(RestClient, SessionService, $rootScope) {
            var vm = this;

            // set RestClient
            vm.RestClient = RestClient;
            // set SessionService
            vm.SessionService = SessionService;
            // set $rootScope
            vm.rootScope = $rootScope;

            // set groupName from localStorage
            vm.groupName = localStorage.groupName;
            // set username from localStorage
            vm.username = localStorage.username;
            // set fullName from localStorage
            vm.fullName = localStorage.fullName;
            // set regionName from localStorage
            vm.regionName = localStorage.regionName;
            // set lastLogin from localStorage
            vm.lastLogin = localStorage.lastLogin;

            // if localStorage productList is available, set productList from localStorage
            if (localStorage.productList) {
                vm.products = JSON.parse(localStorage.productList);
            }

        }

        /**
         * @ngdoc method
         * @name logout
         * @methodOf cat.HeaderController
         *
         * @description
         * Logout the user
         */
        HeaderCtrl.prototype.logout = function () {
            // make the request to logout from the application.
            var vm = this,
                response = vm.RestClient.sendRequest('logout', null, null, 'GET');

            // if logout is successful, then endSession.
            response.then(function (response) {
                if (response.data === 'true') {
                    vm.SessionService.endSession();
                }
            });
        };

        // add defined header controller to the module
        CatModule.controller('HeaderCtrl', HeaderCtrl);

    });

}());

=========

/**
         * @ngdoc controller
         * @name cat.MainCtrl
         * @requires SessionService, $state
         *
         * @description
         * Main controller for the whole application
         */
        function MainCtrl($state, ngDialog, $rootScope, RestClient, SessionService) {
            var vm = this;

            // set SessionService
            vm.SessionService = SessionService;
            // set $state
            vm.state = $state;
            // set ngDialog
            vm.ngDialog = ngDialog;
            // set $rootScope
            vm.rootScope = $rootScope;
            // set RestClient
            vm.restClient = RestClient;

            // on catching sessionActive , set sessionActive
            $rootScope.$on('sessionActive', function (event, data) {
                vm.sessionActive = data;
            });


            // on catching state-change, set state-change
            $rootScope.$on('state-change', function (event, data) {
                // calling outage message notifier
                vm.getOutageMessageNotification(data);
            });

            // if active session is found, direct to Home page
            if (vm.sessionActive) {
                $state.go('Home');
            }
        }


 /**
         * @ngdoc method
         * @name openDialog
         * @methodOf cat.main.mainctrl
         *
         * @description
         * open dialog window.
         */
        MainCtrl.prototype.openDialog = function (url) {
            var vm = this;

            // if service has and active seesion open dialog window.
            if (vm.SessionService.sessionActive.get()) {
                vm.ngDialog.open({
                    template: url + '.html'
                });
            } else {
                // close all dialog windows.
                vm.ngDialog.closeAll();
            }
        };



/**
         * @ngdoc method
         * @name getOutageMessageNotification
         * @methodOf cat.main.mainctrl
         *
         * @description
         * Popping up the outage if it is a product.
         */
        MainCtrl.prototype.getOutageMessageNotification = function (productName) {
            var vm = this,
                response,
                messageData,
                messageFromTime,
                messageToTime,
                path,
                productId;

            // check whether service has active session.
            if (vm.SessionService.sessionActive.get()) {
                //get the productId for the given product name, from product map which returns after calling the session service.
                productId = vm.SessionService.productMap[productName];
                // check whether productId is available.
                if (productId) {
                    // Dummy ID for now.
                    path = productId + '/' + localStorage.userId; // productId + '/' + vm.userId;
                    // send request to accessActiveOutageMessage service to get the message.
                    response = vm.restClient.sendRequest("accessActiveOutageMessage", null, path, 'GET');

                    // validate response and create message
                    response.then(function (response) {

                        // if status is success get the message text from response bind for Notification.
                        if (response.status === 200) {
                            if (response.data) {
                                messageData = response.data.messageText;

                                // Need to bind this via the Notification directive.
                                vm.rootScope.$emit('notifications', messageData, 'success');
                            }
                        }
                    });
                }
            }
        };


==========

define(dependencies, function (CatModule) {

        // convert input for upper case.
        function capitalize() {
            function filter(input, scope) {
                if (input) {
                    // convert input to lowercase
                    input = input.toLowerCase();

                    return input.substring(0, 1).toUpperCase() + input.substring(1);
                }
            }

            return filter;
        }

        // add capitalize function to the module
        CatModule.filter('capitalize', capitalize);

    });

========

*global define*/

(function () {

    /**
     * @ngdoc overview
     * @name cat.balance
     *
     * @description
     * return balance module.
     */

    // force script to be run in strict mode
    'use strict';

    // define dependencies
    var dependencies = ['angular'];

    define(dependencies, function (angular) {

        return angular.module('cat.balance', []);

    });

}());

Thursday, November 6, 2014

Java Updates

Java 5
--------
Features added: 
- Generics: provides compile-time (static) type safety for collections and eliminates the need for most typecasts (type conversion). 
- Metadata: also called annotations; allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities. 
- Autoboxing/unboxing: automatic conversions between primitive types (such as int) and primitive wrapper classes (such as integer). 
- Enumerations: the enum keyword creates a typesafe, ordered list of values (such as day.monday, day.tuesday, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern). 
- Swing: new skinnable look and feel, called synth. 
- Var args: the last parameter of a method can now be declared using a type name followed by three dots (e.g. Void drawtext(string... Lines)). In the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type. 
- Enhanced for each loop: the for loop syntax is extended with special syntax for iterating over each member of either an array or any iterable, such as the standard collection classesfix the previously broken semantics of the java memory model, which defines how threads interact through memory. 
- Automatic stub generation for rmi objects. 
- Static imports concurrency utilities in package java.util.concurrent. 
- Scanner class for parsing data from various input streams and buffers. 
- Assertions 
- StringBuilder class (in java.lang package) 
- Annotations

Java 6
----------
Features added: 
- Support for older win9x versions dropped. 
- Scripting lang support: Generic API for integration with scripting languages, & built-in mozilla javascript rhino integration 
- Dramatic performance improvements for the core platform, and swing. 
- Improved web service support through JAX-WS JDBC 4.0 support 
- Java compiler API: an API allowing a java program to select and invoke a java compiler programmatically. 
- Upgrade of JAXB to version 2.0: including integration of a stax parser. 
- Support for pluggable annotations 
- Many GUI improvements, such as integration of swingworker in the API, table sorting and filtering, and true swing double-buffering (eliminating the gray-area effect).

Jav 7
--------
Features Added: 
Support for dynamically-typed languages (InvokeDynamic): Extensions to the JVM, the Java language, and the Java SE API to support the implementation of dynamically-typed languages at performance levels near to that of the Java language itself
- Strict class-file checking: Class files of version 51 (SE 7) or later must be verified with the typechecking verifier; the VM must not fail over to the old inferencing verifier.
- Small language enhancements (Project Coin): A set of small language changes intended to simplify common, day-to-day programming tasks: Strings in switch statements, try-with-resources statements, improved type inference for generic instance creation ("diamond"), simplified varargs method invocation, better integral literals, and improved exception handling (multi-catch)
- Upgrade class-loader architecture: A method that frees the underlying resources, such as open files, held by a URLClassLoader
- Concurrency and collections updates: A lightweight fork/join framework, flexible and reusable synchronization barriers, transfer queues, concurrent linked double-ended queues, and thread-local pseudo-random number generators.
- Internationalization Upgrade: Upgrade on Unicode 6.0, Locale enhancement and Separate user locale and user-interface locale.
- More new I/O APIs for the Java platform (NIO.2), NIO.2 filesystem provider for zip/jar archives, SCTP, SDP, TLS 1.2 support.
- Security & Cryptography implemented Elliptic-curve cryptography (ECC).
- Upgrade to JDBC 4.1 and Rowset 1.1.
- XRender pipeline for Java 2D, Create new platform APIs for 6u10 graphics features, Nimbus look-and-feel for Swing, Swing JLayer component, Gervill sound synthesizer.
- Upgrade the components of the XML stack to the most recent stable versions: JAXP 1.4, JAXB 2.2a, and JAX-WS 2.2.
- Enhanced MBeans.