ADD Driver to ODI (Oracle Data Integration)

I will demonstrate how to add additional library to ODI application, I’am using JDBC Driver for MSSQL 2005(sqljdbc4.jar) as example.

  1. Download from the file JDBC for MSSQL 2005 on following url http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx
  2. Extract the archive file and the file should be appear like below JDBCSQLSERVER2005
  3. copy your sqljdbc4.jar to following directory “C:\Users\A\AppData\Roaming\odi\oracledi\userlib”, basically your user directory and paste there, the appearance should be like below additionalpath

       *don’t ever put the file sqljdbc.jar file at the same directory of sqljdbc4.jar, this will trigger the issue

  4. Add the reference file to the content of additional_path.txt, like following description
    flicker Tags: , ,

Change JDK of ODI (Oracle Data Integration)

Sometimes you want to upgrade the version of JDK in ODI client, in case your JDK  version already old, and you already defined the JDK version previously on first installation, then following method the best approach for you to choose. following method is the way to switch or change your JDK version, so these steps consider you already defined/installed the previous JDK and you want to upgrade the latest version

  1. Navigate to the ODI installation and find the highlighted configuration fileOdiCofiguration
  2. Open the odi.conf and the content similar like following odi_javaHome
  3. change the directory of JavaHome to your latest java installation directory
  4. And Restart your ODI application by close and open it again, THX
    Technorati Tags: ,

Perbandingan JSF, Struts, Spring Web MVC dan Hibernate

Saya gunakan netbean versi 7.3 untuk membuat web project dengan JSP,  dibawah ini adalah beberapa framework yang disediakan oleh netbean versi 7.3JSP_Framework

Jika kita memilih JavaServer Faces maka kita akan diberikan struktur direktori beserta file yang disediakan secara default seperti dibawah ini,

JSF_Structure

struktur direktori dari  framework Struts seperti dibawah ini

Struts_Framework 

untuk Hibernate Projek pada awal inisialisasi kita akan diberikan pilihan untuk memilih semacam database koneksi atau membuat koneksi baru, ketika selesai maka struktur projek dari Hibernate seperti dibawah ini

Hibernate_framework

The Benefit of synthesizing

Example we have class similar like this 

@interface Person : NSObject {
  int age;
  Address *address;
  NSString *name;
}

- (int)age;
- (void)setAge:(int)anAge;

- (Address *)address;
- (void)setAddress:(Address *)anAddress;

- (NSString *)name;
- (void)setName:(NSString *)aName;

// ...
@end


And by using properties, we end up with this:
@interface Person : NSObject {
  int age;
  Address *address;
  NSString *name;
}

@property int age;
@property (retain) Address *address;
@property (copy) NSString *name;

// ...
@end
*note at bold section in above code
It's not a giant difference, but it's an improvement. As well as making the code more compact.

The@implementation for the Person class looks like this:

// hand written getter and setter methods
@implementation Person

- (int)age {
  return age;
}

// assign-type setter
- (void)setAge:(int)anAge {
  age = anAge;
}

- (Address *)address {
  return address;
}

// retain-type setter
- (void)setAddress:(Address *)anAddress {
  if (address != anAddress) {
    [address release];
    address = [anAddress retain];
  }
}

- (NSString *)name {
  return name;
}

// copy-type setter
- (void)setName:(NSString *)aName {
  if (name != aName) {
    [name release];
    name = [aName copy];
  }
}

// ...

@end
That's too much unnecessary code, and memory management in the retain and copy type setters makes it more error prone than simple assign type setters.
Where @property really starts to pay off is when we combine it with @synthesize, like following code below
// synthesized getter and setter methods
@implementation Person

@synthesize age, address, name;

// ...
@end

we can define @synthesize like following code 
@implementation Person

@synthesize age;
@synthesize address, name;

// ...
@end

you can create custom setter to add some logic or validation like similar below

// synthesized getter and setter methods
// with one custom setter
@implementation Person

@synthesize age, address, name;

- (void)setAge:(int)anAge {
  age = anAge;
  if (age >= 55) {
    [[JunkMailer sharedJunkMailer] addPersonToAARPMailingList:self];
  }
}

// ...
@end


The @synthesize directive has one modifier if you would like to hide your variable name, similar like below code.
@implementation Person

@synthesize age = ageInYears, address, name;

// ...
@end


Bookmark and Share

Objective C Basic (synthesizing properties)

The Benefit of synthesizing

Example we have class similar like this 

@interface Person : NSObject {
  int age;
  Address *address;
  NSString *name;
}

- (int)age;
- (void)setAge:(int)anAge;

- (Address *)address;
- (void)setAddress:(Address *)anAddress;

- (NSString *)name;
- (void)setName:(NSString *)aName;

// ...
@end


And by using properties, we end up with this:
@interface Person : NSObject {
  int age;
  Address *address;
  NSString *name;
}

@property int age;
@property (retain) Address *address;
@property (copy) NSString *name;

// ...
@end
*note at bold section in above code
It's not a giant difference, but it's an improvement. As well as making the code more compact.

The@implementation for the Person class looks like this:

// hand written getter and setter methods
@implementation Person

- (int)age {
  return age;
}

// assign-type setter
- (void)setAge:(int)anAge {
  age = anAge;
}

- (Address *)address {
  return address;
}

// retain-type setter
- (void)setAddress:(Address *)anAddress {
  if (address != anAddress) {
    [address release];
    address = [anAddress retain];
  }
}

- (NSString *)name {
  return name;
}

// copy-type setter
- (void)setName:(NSString *)aName {
  if (name != aName) {
    [name release];
    name = [aName copy];
  }
}

// ...

@end
That's too much unnecessary code, and memory management in the retain and copy type setters makes it more error prone than simple assign type setters.
Where @property really starts to pay off is when we combine it with @synthesize, like following code below
// synthesized getter and setter methods
@implementation Person

@synthesize age, address, name;

// ...
@end

we can define @synthesize like following code 
@implementation Person

@synthesize age;
@synthesize address, name;

// ...
@end

you can create custom setter to add some logic or validation like similar below

// synthesized getter and setter methods
// with one custom setter
@implementation Person

@synthesize age, address, name;

- (void)setAge:(int)anAge {
  age = anAge;
  if (age >= 55) {
    [[JunkMailer sharedJunkMailer] addPersonToAARPMailingList:self];
  }
}

// ...
@end


The @synthesize directive has one modifier if you would like to hide your variable name, similar like below code.
@implementation Person

@synthesize age = ageInYears, address, name;

// ...
@end


Bookmark and Share