Thursday, September 12, 2013

Injectable Singleton - APIDesign


Using Service Loader along with Singleton Design is really not possible.
Because Service Loader always going to return new object after loading.

To overcome this following is the useful approach to design such requirement.

This is about looking for :
  • Always getting Single Object 
  • Using Service Loader
Refer:
Injectable Singleton - APIDesign

Wednesday, June 26, 2013

Using VIRTUAL Column in JPA Entity


While working with Java Persistence using ORM Layer, new feature from Oralce 11g can be useful.
E.g. Virtual Column.
 
Whenever want to use Virtual Column in JPA Entity, it should follow:
  • Field should not be Updatable.
  • Field should not be populated while creating the entity.

For such scenario, one has to use below annotation on field:
@Column(insertable=false, updatable=false)

Below is Detailed Example JPA Entity with Virtual Column usage:

Virtual Column Should be added like:
alter table cosnumers add(
     IS_ADMIN GENERATED ALWAYS AS ( CASE WHEN CONSUMER_ID IS NOT NULL THEN 1 ELSE 0 END)
);

JPA Entity Should define field for Virtual Column as shown below:
Package com.acp.jpa;

import javax.persistence.Column;
import javax.persistence.Entity;

@Entity
public class Consumer {

       private Long consumerID;

       @Column(insertable=false, updatable=false)
       private boolean isAdmin;
      
       /**
       * @return the consumerID
       */
       public Long getConsumerID() {
              return consumerID;
       }

       /**
       * @param consumerID the consumerID to set
       */
       public void setConsumerID(Long consumerID) {
              this.consumerID = consumerID;
       }

       //--- For Virtual Column - Provide only Getters.
       /**
       * @return the isAdmin
       */
       public boolean isAdmin() {
              return isAdmin;
       }

}



--
III  Cheers!

Thursday, June 20, 2013

Using Oracle SQL Developer as MySQL IDE

Need to follow below steps:

- Download desired MySQL connector, unzip and place to desired directory.
- From SQLDeveloper -> Tools -> Preferences -> Databases -> Third party JDBC driver.
  "Add Entry" for desired MySQL connector.

That's It!!!

Now you can observe MySQL tab in the DB Connections SQLDeveloper window.


References:
http://www.techrepublic.com/blog/programming-and-development/configuring-sql-developer-for-mysql/564


Cheers!

Thursday, June 13, 2013

Eclipse Performance Enhancement!

Hi,

Most of the time we suffer from Eclipse responsiveness or performance.

Below is the link for changing Eclipse Memory settings in "eclipse.ini" file:

Tuesday, March 19, 2013

Notepad++ : Another good tool discovered for developers

This is very handy tool having rich file types support and syntax highlighting.

I found it quite handy if you are dealing with any Character Encoding related issues or 
Need to verify or view various characters like TAB, Carriage Return(CR), Line Feed(LF) or New Line Characters.

It also supports very reach support for Character Encoding.

Listed below the features from its official website:
  • Syntax Highlighting and Syntax Folding
  • User Defined Syntax Highlighting and Folding: screenshot 1, screenshot 2, screenshot 3 and screenshot 4
  • PCRE (Perl Compatible Regular Expression) Search/Replace
  • GUI entirely customizable: minimalist, tab with close button, multi-line tab, vertical tab and vertical document list
  • Document Map
  • Auto-completion: Word completion, Function completion and  Function parameters hint
  • Multi-Document (Tab interface)
  • Multi-View
  • WYSIWYG (Printing)
  • Zoom in and zoom out
  • Multi-Language environment supported
  • Bookmark
  • Macro recording and playback
  • Launch with different arguments

You can DOWNLOAD this from below link:

Sunday, March 17, 2013

Using style.display instead of style.visibility

Hello,

HTML-CSS-JavaScript combination is little bit tricky to non-web developers.

There are few UIs which seems to be inconsistent as we are using JavaScript to enable/disable the HTML Components.
And it takes time to find out and align all the forms.
If you are using any JavaScript and CSS combination to hide/show any components, below information may save your time. 


To maintain proper alignment of whole HTML and its elements, please use following:
Element Property
Value
style.display
'none' (To hide element)
style.display
'' (Empty string to show element)


Please try to avoid using style.display='block' and style.visibility='hidden'/'visible'/'inline' as it is affecting the CSS applied.

---
Cheers and Enjoy Scripting!
-------------------------------------------------------------------------
Alphabet 'O' stands for Opportunity,
Which is absent in 'Yesterday', Is available once in 'Today'
And thrice in 'Tomorrow' So don't think about 'Yesterday'.
-------------------------------------------------------------------------

Saturday, February 18, 2012

Differentiate : ClassNotFoundException & NoClassDefFoundError

It is important to keep two different exceptions strait in our head in this case:
  1. java.lang.ClassNotFoundException This exception indicates that the class was not found on the classpath. This indicates that we were trying to load the class definition, and the class did not exist on the classpath.
  2. java.lang.NoClassDefFoundError This exception indicates that the JVM looked in its internal class definition data structure for the definition of a class and did not find it. This is different than saying that it could not be loaded from the classpath. Usually this indicates that we previously attempted to load a class from the classpath, but it failed for some reason - now we're trying again, but we're not even going to try to load it, because we failed loading it earlier. The earlier failure could be a ClassNotFoundException or an ExceptionInInitializerError (indicating a failure in the static initialization block) or any number of other problems. The point is, a NoClassDefFoundError is not necessarily a classpath problem.

Cheers!