Tuesday, September 8, 2015

JAVA Strings Utility methods

import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;

/**
 * A set of commonly used utilities for {@link String}s
 * */
public class Strings {

    /**
     * A function that encodes any Object string value i.e.
     * {@code String.valueOf(object)}, within single-quotes (')
     */
    public static final Function<Object, String> WITHIN_SINGLE_QUOTES = new WithinSingleQuoteFunction();
    private static final Function<Object, String> TO_STRING_FUNCTION = new ToStringFunction();

    /**
     * Returns {@code true} if the string is {@code null} or is an empty string. <br/>
     * <br/>
     * <b>NOTE:</b> Does not consider any whitespace characters in the string as
     * empty. If you want to consider whitespace characters as effectively empty
     * then use {@link Strings#isNullOrBlank(String)} instead.
     *
     * <br/>
     * <br/>
     * Example: <br/> {@code Strings.isNullOrEmpty(null)} or
     * {@code Strings.isNullOrEmpty("")} will return true
     *
     * @param inputString
     *            string reference to check
     * @return {@code true} if the string is null or is an empty string
     */
    public static boolean isNullOrEmpty(String inputString) {
        return inputString == null || inputString.length() == 0;
    }

    /**
     * Returns {@code true} if the optional string is <i>absent</i> or is an
     * empty string. <br/>
     * <br/>
     * <b>NOTE:</b> Does not consider any whitespace characters in the string as
     * empty. If you want to consider whitespace characters as effectively empty
     * then use {@link Strings#isAbsentOrBlank(String)} instead.
     *
     * <br/>
     * <br/>
     * Example: <br/> {@code Strings.isAbsentOrEmpty(Optional.absent())} or
     * {@code Strings.isNullOrEmpty(Optional.of("")} will return true
     *
     * @param a
     *            non-null optional inputString string reference to check
     * @return {@code true} if the optional string is absent or is an empty
     *         string
     */
    public static boolean isAbsentOrEmpty(Optional<String> optionalInputString) {
        return optionalInputString.isPresent() == false
                || optionalInputString.get().length() == 0;
    }

    /**
     * Returns {@code true} if the string is {@code null} or is a blank string.
     * Considers any whitespace characters as blank. Trims the string to check
     * for blankness.
     *
     * <br/>
     * <br/>
     * <b>NOTE:</b> Does consider any whitespace characters in the string as
     * empty. If you do not want to consider whitespace characters as
     * effectively empty then use {@link Strings#isNullOrEmpty(String)} instead.
     *
     * <br/>
     * <br/>
     * Example: <br/> {@code Strings.isNullOrBlank(null)} or
     * {@code Strings.isNullOrBlank(" ")} will return true
     *
     * @param inputString
     *            string reference to check
     * @return {@code true} if the string is null or is a blank string
     *         (considering space, \t or other whitespace characters as blank)
     */
    public static boolean isNullOrBlank(String inputString) {
        return inputString == null || inputString.trim().length() == 0;
    }

    /**
     * Returns {@code true} if the optional string is <i>absent</i> or is a
     * blank string. Considers any whitespace characters as blank. Trims the
     * string to check for blankness.
     *
     * <br/>
     * <br/>
     * <b>NOTE:</b> Does consider any whitespace characters in the string as
     * empty. If you do not want to consider whitespace characters as
     * effectively empty then use {@link Strings#isAbsentOrEmpty(String)}
     * instead.
     *
     * <br/>
     * <br/>
     * Example: <br/> {@code Strings.isAbsentOrBlank(Optinal.absent())} or
     * {@code Strings.isAbsentOrBlank(Optional.of(" ")} will return true
     *
     * @param a
     *            non-null optional inputString string reference to check
     * @return {@code true} if the optional string is absent or is a blank
     *         string (considering space, \t or other whitespace characters as
     *         blank)
     * @throws NullPointerException
     *             if inputString is null
     */
    public static boolean isAbsentOrBlank(Optional<String> optionalInputString) {
        return optionalInputString.isPresent() == false
                || optionalInputString.get().trim().length() == 0;
    }

    /**
     * Returns a string consisting of a specific number of concatenated copies
     * of an input string. For example, {@code repeat("hey", 3)} returns the
     * string {@code "heyheyhey"}.
     *
     * @param string
     *            any non-null string
     * @param count
     *            the number of times to repeat it; a nonnegative integer
     * @return a string containing {@code string} repeated {@code count} times
     *         (the empty string if {@code count} is zero)
     * @throws IllegalArgumentException
     *             if {@code count} is negative
     */
    public static String repeat(String string, int count) {
        checkNotNull(string, "string is null");

        if (count <= 1) {
            checkArgument(count >= 0, "invalid count: " + count);
            return (count == 0) ? "" : string;
        }

        final int len = string.length();
        final long longSize = (long) len * (long) count;
        final int size = (int) longSize;
        if (size != longSize) {
            throw new ArrayIndexOutOfBoundsException(
                    "Required array size too large: " + longSize);
        }

        final char[] array = new char[size];
        string.getChars(0, len, array, 0);
        int n;
        for (n = len; n < size - n; n <<= 1) {
            System.arraycopy(array, 0, array, n, n);
        }
        System.arraycopy(array, 0, array, n, size - n);
        return new String(array);
    }

    /**
     * Joins the String representation ( {@code String.valueOf(..)} ) of each
     * part given in {@code parts} array using the separator provided.
     *
     * <p>
     * Example: <code>
     *   Strings.join(",", new String[]{"a","b"})
     * }</code> will return {@code a,b}
     * <p>
     * <b>NOTE:</b> This method skips any {@code null} parts encountered.
     *
     * <p>
     * Example: {@code Strings.join(",", new String[] "a",null,"b"})} will
     * return {@code a,b}
     *
     * @param separator
     *            any non-null string
     * @param parts
     *            are the objects whose string representation will be joined
     *            using separator
     * @return a string containing the string representation of each part with
     *         separator in between each
     */
    public static String join(String separator, Object[] parts) {
        return join(separator, parts, TO_STRING_FUNCTION);
    }

    /**
     * Joins the String representation of each part in {@code parts} by applying
     * {@code partFunction} on it, using the separator provided.
     *
     * <p>
     * Example: <code>
     *   Strings.join(",", new String[]{"a","b"}, Strings.WITHIN_SINGLE_QUOTES)
     * }</code> will return {@code 'a','b'}
     * <p>
     * <b>NOTE:</b> This method skips any {@code null} parts encountered.
     *
     * <p>
     * Example: {@code Strings.join(",", new String[] "a",null,"b"},
     * Strings.WITHIN_SINGLE_QUOTES)} will return {@code 'a','b'}
     *
     * @param separator
     *            any non-null string
     * @param parts
     *            are the objects whose string representation will be joined
     *            using separator
     * @param partFunction
     *            a non-null function that will be applied to all non-null parts
     * @return a string containing the string representation of each part with
     *         separator in between each
     */
    public static String join(String separator, Object[] parts,
            Function<Object, String> partFunction) {
        checkNotNull(parts, "parts are null");
        return join(separator, Arrays.asList(parts), partFunction);
    }

    /**
     * @see Strings#join(String, Object[])
     */
    public static String join(String string, Iterable<?> parts) {
        return join(string, parts, TO_STRING_FUNCTION);
    }

    /**
     * @see Strings#join(String, Object[], Function)
     */
    public static String join(String string, Iterable<?> parts,
            Function<Object, String> partFunction) {
        checkNotNull(parts, "parts are null");
        return join(string, parts.iterator(), partFunction);
    }

    private static String join(String separator, Iterator<?> parts,
            Function<Object, String> partFunction) {
        checkNotNull(separator, "separator is null");
        checkNotNull(partFunction, "partFunction is null");

        StringBuilder builder = new StringBuilder();

        while (parts.hasNext()) {
            Object part = parts.next();
            if (part != null) {
                builder.append(partFunction.apply(part));
                break;
            }
        }

        while (parts.hasNext()) {
            Object part = parts.next();
            if (part != null) {
                builder.append(separator);
                builder.append(partFunction.apply(part));
            }
        }
        return builder.toString();
    }

    /**
     * Returns a string, of length at least {@code minLength}, consisting of
     * {@code string} prepended with as many copies of {@code padChar} as are
     * necessary to reach that length. For example,
     *
     * <ul>
     * <li>{@code padStart("7", 3, '0')} returns {@code "007"}
     * <li>{@code padStart("2010", 3, '0')} returns {@code "2010"}
     * </ul>
     *
     * @param string
     *            the string which should appear at the end of the result
     * @param minLength
     *            the minimum length the resulting string must have. Can be zero
     *            or negative, in which case the input string is always
     *            returned.
     * @param padChar
     *            the character to insert at the beginning of the result until
     *            the minimum length is reached
     * @return the padded string
     */
    public static String padStart(String string, int minLength, char padChar) {
        checkNotNull(string, "string is null");
        if (string.length() >= minLength) {
            return string;
        }

        int padCount = minLength - string.length();
        StringBuilder builder = new StringBuilder(minLength);
        for (int i = 0; i < padCount; i++) {
            builder.append(padChar);
        }

        builder.append(string);
        return builder.toString();
    }

    /**
     * Returns a string, of length at least {@code minLength}, consisting of
     * {@code string} appended with as many copies of {@code padChar} as are
     * necessary to reach that length. For example,
     *
     * <ul>
     * <li>{@code padEnd("4.", 5, '0')} returns {@code "4.000"}
     * <li>{@code padEnd("2010", 3, '!')} returns {@code "2010"}
     * </ul>
     *
     * @param string
     *            the string which should appear at the beginning of the result
     * @param minLength
     *            the minimum length the resulting string must have. Can be zero
     *            or negative, in which case the input string is always
     *            returned.
     * @param padChar
     *            the character to append to the end of the result until the
     *            minimum length is reached
     * @return the padded string
     */
    public static String padEnd(String string, int minLength, char padChar) {
        checkNotNull(string, "string is null");
        if (string.length() >= minLength) {
            return string;
        }

        int padCount = minLength - string.length();
        StringBuilder builder = new StringBuilder(minLength);
        builder.append(string);
        for (int i = 0; i < padCount; i++) {
            builder.append(padChar);
        }

        return builder.toString();
    }

    static class WithinSingleQuoteFunction implements Function<Object, String> {

        private static final String SINGLE_QUOTE = "'";

        @Override
        public String apply(Object input) {
            return SINGLE_QUOTE + TO_STRING_FUNCTION.apply(input)
                    + SINGLE_QUOTE;
        }
    }

    static class ToStringFunction implements Function<Object, String> {

        @Override
        public String apply(Object input) {
            return String.valueOf(input);
        }
    }

    /**
     * Provides a splitter for given separator.
     *
     * @param separator
     *            on which split is done.
     *
     * @return Splitter on Separator.
     * @see Splitter
     */
    public static Splitter splitter(final char separator) {
        return Splitter.on(separator);
    }

    /**
     * Returns predicate which evaluates to true if the string passed is
     * non-null and non-empty. It can be used in other utilities such as
     * {@link Collectionz#filter(java.util.Collection, Predicate)}
     *
     * <p>
     * Usage:
     *
     * <pre>
     * <code>Collectionz.filter(unfilteredCollection, Strings.nonNullAndNonEmpty())
     * </code>
     * </pre>
     *
     * @return predicate which evaluates to true if the string passed is
     *         non-null and non-empty
     * @see Predicate
     * @see Collectionz
     */
    public static Predicate<String> nonNullAndNonEmpty() {
        return NonNullAndNonEmpty.INSTANCE;
    }

    private static enum NonNullAndNonEmpty implements Predicate<String> {
        INSTANCE;

        @Override
        public boolean apply(String input) {
            return isNullOrEmpty(input) == false;
        }
    }

    /**
     * Returns predicate which evaluates to true if the string passed is
     * non-null and non-blank (whitespace characters are considered as empty).
     * It can be used in other utilities such as
     * {@link Collectionz#filter(java.util.Collection, Predicate)}
     *
     * <p>
     * Usage:
     *
     * <pre>
     * <code>Collectionz.filter(unfilteredCollection, Strings.nonNullAndNonBlank())
     * </code>
     * </pre>
     *
     * @return predicate which evaluates to true if the string passed is
     *         non-null and non-blank
     * @see Predicate
     * @see Collectionz
     */
    public static Predicate<String> nonNullAndNonBlank() {
        return NonNullAndNonBlank.INSTANCE;
    }

    private static enum NonNullAndNonBlank implements Predicate<String> {
        INSTANCE;

        @Override
        public boolean apply(String input) {
            return isNullOrBlank(input) == false;
        }
    }

    /**
     * Filters all null or empty elements from the underlying {@code collection}
     *
     * <p>
     * <b>NOTE: </b>Does not remove blank elements, use
     * {@link Strings#filterNullOrBlank(Collection)} for that.
     *
     * <p>
     * It has the same effect as calling
     * {@code Collectionz.filter(collection, Strings.nonNullAndNonEmpty());}
     *
     * @param collection
     *            a non-null collection of strings
     * @throws NullPointerException
     *             if collection passed is null
     */
    public static void filterNullOrEmpty(Collection<String> collection) {
        Collectionz.filter(collection, nonNullAndNonEmpty());
    }

    /**
     * Filters all null or blank elements from the underlying {@code collection}
     * , elements containing just whitespace characters are also removed from
     * the collection.
     *
     * <p>
     * <b>NOTE: </b>For removing just empty elements, use
     * {@link Strings#filterNullOrEmpty(Collection)} for that.
     *
     * <p>
     * It has the same effect as calling
     * {@code Collectionz.filter(collection, Strings.nonNullAndNonBlank());}
     *
     * @param collection
     *            a non-null collection of strings
     * @throws NullPointerException
     *             if collection passed is null
     */
    public static void filterNullOrBlank(Collection<String> collection) {
        Collectionz.filter(collection, nonNullAndNonBlank());
    }

    /**
     * Returns {@code true} if trimmed input is true or yes, false otherwise.
     * <p>
     * Note that this method trims the input and performs a case insensitive match.
     */
    public static boolean toBoolean(String booleanInString) {
        if (booleanInString == null) {
            return false;
        }
       
        String trimmedString = booleanInString.trim();
        return "true".equalsIgnoreCase(trimmedString)
                || "yes".equalsIgnoreCase(trimmedString);
    }

    /**
     * Returns a function that converts the string to integer.
     * <p>
     * Note that the returned function throws {@code NumberFormatException} if the
     * string does not contain a parsable integer.
     *
     * @see Integer#parseInt(String)
     */
    public static Function<String, Integer> toInt() {
        return ToIntFunction.INSTANCE;
    }
   
    private static enum ToIntFunction implements Function<String, Integer> {
        INSTANCE;
       
        @Override
        public Integer apply(String input) {
            return Integer.parseInt(input);
        }
    }
}

/**
 * Simple static methods to be called at the start of your own methods to verify
 * correct arguments and state. This allows constructs such as
 * <pre>
 *     if (count <= 0) {
 *       throw new IllegalArgumentException("must be positive: " + count);
 *     }</pre>
 *
 * to be replaced with the more compact
 * <pre>
 *     checkArgument(count > 0, "must be positive: %s", count);
 * </pre>
 *
 * Use of check nulls can be used before assigning the references for fail fast approach such as
 * <pre>
 *     class MyClass{
 *      public MyClass(Object arg1, Object arg2){
 *       this.arg1 = checkNotNull(arg1,"arg1 is null");
 *       this.arg2 = checkNotNull(arg2,"arg2 is null");
 *      }
 *     }</pre>
 *
 * <p><b>NOTE:</b> Best when used as static imports.
 *
 * 
 *
 */
public class Preconditions {
    private Preconditions(){}

    /**
     * Ensures that an object reference passed as a parameter to the calling method is not null.
     *
     * @param reference an object reference
     * @param errorMessage the exception message to use if the check fails; will be converted to a
     *     string using {@link String#valueOf(Object)}
     * @return the non-null reference that was validated
     * @throws NullPointerException if {@code reference} is null
     */
    public static <T> T checkNotNull(T reference, Object errorMessage) {
        if (reference == null) {
            throw new NullPointerException(String.valueOf(errorMessage));
        }
        return reference;
    }

    /**
     * Ensures the truth of an expression involving one or more parameters to the calling method.
     *
     * @param expression a boolean expression
     * @param errorMessage the exception message to use if the check fails; will be converted to a
     *     string using {@link String#valueOf(Object)}
     * @throws IllegalArgumentException if {@code expression} is false
     */
    public static void checkArgument(boolean expression, Object errorMessage) {
        if (!expression) {
            throw new IllegalArgumentException(String.valueOf(errorMessage));
        }
    }
   
    /**
     * Ensures the truth of an expression involving the state of the calling instance, but not
     * involving any parameters to the calling method.
     *
     * @param expression a boolean expression
     * @param errorMessage the exception message to use if the check fails; will be converted to a
     *     string using {@link String#valueOf(Object)}
     * @throws IllegalStateException if {@code expression} is false
     */
    public static void checkState(boolean expression, Object errorMessage) {
        if (!expression) {
            throw new IllegalStateException(String.valueOf(errorMessage));
        }
    }
}

What is Hibernate ?


  • Its actual meaning is “To be active and Spending a long time in a asleep State”. Frogs and Lizards and many more does this in their life of Winter.  
  • Our Hibernate Framework also works the same way. It remains active behind the application.

  • Hibernate is the open source light weight Framework invented by Gavin King.
  • Hibernate is ORM based Framework , it transfer the data between an application and a database (Relational) in the form of the objects.
  • It is Object Relational Mapping (ORM) framework.
  • Hibernate is a non-invasive framework, means it will not force the programmer to extend/implement any class/interface, and in hibernate we have to use POJO classes so it is light weight framework.
  • Hibernate can be use for a standalone desktop application and also for web based application, In short it is suitable for all types of applications (stand alone or desktop or any web application)
  •  
  • Hibernate is use to insert/update/Select/delete data from Database.


It builds persistent objects using following Java feature:
Inheritance
Association
Composition
Polymorphism
Collections API for Mappings
Easy query feature
Hibernate Query Language (HQL)
Criteria Query
Query by Example

Wednesday, September 2, 2015

Servlet Container's Role

Loads the servlet.
Authenticate the user (if required).
Calls the service method.
Update the current session(if required).
Create a resuest object (javax.servlet.ServletRequest interface or the javax.servlet.http.ServletRequest).
Populate the required information in the request object.
Create a response object (javax.servlet.ServletResponse interface or the javax.servlet.http.ServletResponse).

WEB Server

A Web Server is also called a HTTP server. because it uses the HTTP protocol to communicate with its clients (web-browsers).

A java based web server mainly uses two classes
1) java.net.Socket
2) Java.net.ServerSocket
and the communication are done through the HTTP messages.

Here the HTTP protocol  plays a main role to send and receive the data over the Internet.
HTTP is a request and response protocol.
The client sends the request and the server sends the response.

Difference between Tomcat 4 and 5

Tomcat 5 supports Servlet 2.4 and Tomcat 4 supports Servlet 2..

Tomcat 5 supports JSP 2.0 specifications, Tomcat 4 JSP 1.2. 



Tomcat 5 does not need a mapper component to find a child component, therefore simplifying the code.
Tomcat 5 has a more efficient default connector than Tomcat 4. 

Tomcat 5 shares a thread for background processing whereas Tomcat 4's components all have their own threads for background processing. 

Therefore, Tomcat 5 uses less resources in this regard.


Tuesday, September 1, 2015

Sunday, August 16, 2015

1.JAVA QUES + ANS



Question 1. Given this code fragment:
List<String> vitamins = new ArrayList<String>();
vitamins.add("A");
vitamins.add("B12");
vitamins.add("C");
vitamins.set(1,"B");
vitamins.add(1,"D");
System.out.println(vitamins);
What is the result?
a. [A, D, B, C]
b. [A, D, C]
c. [D, B, C]
d. [D, B12, C]

Question 2. Given this code fragment:
1. class Engine { }
2. public class App {
3. public static void main(String[] args) {
4. Engine e = new Engine();
5. Engine e1 = e;
6. e = null;
7. }
8. }

Which statement is true about this code?
a. It creates an object and the object is eligible for garbage
collection.
b. It creates an object and the object is not eligible for garbage
collection.
c. It creates two objects: e and e1. The e object is eligible for
garbage collection.
d. It creates two objects and both the objects are not eligible for

Scrum and Scrum master

Scrum  Scrum is a framework which helps a team to work together.  It is like a rugby team (the scrum name comes from rugby game). Scrum enco...