/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
MiniDate birthDate = new MiniDate( 1967 , 1 , 23 ) ;
MiniDate hireDate = new MiniDate( 2016 , 2 , 28 ) ;
Employee e1 = new Employee( "Wendy" , "Melvoin" , birthDate , hireDate ) ;
Employee e2 = new Employee( "Lisa" , "Coleman" , 1968 , 2 , 24 , 2016 , 4 , 14 ) ;
// FYI: In real work, use the existing `LocalDate` class rather than invent your own date-time class.
// LocalDate birthDate = LocalDate.of( 1967 , 1 , 23 );
}
}
class Employee {
private String firstName , lastName
; private MiniDate birthDate , hireDate ;
public Employee
( String firstNameArg ,
String lastNameArg , MiniDate birthDateArg , MiniDate hireDateArg
) { this .firstName = firstNameArg;
this .lastName = lastNameArg;
this .birthDate = birthDateArg;
this .hireDate = hireDateArg;
}
public Employee
( String firstNameArg ,
String lastNameArg ,
int birthYearArg ,
int birthMonthArg ,
int birthDayOfMonthArg ,
int hireYearArg ,
int hireMonthArg ,
int hireDayOfMonthArg
) { this .firstName = firstNameArg;
this .lastName = lastNameArg;
this .birthDate = new MiniDate( birthYearArg , birthMonthArg , birthDayOfMonthArg ) ;
this .hireDate = new MiniDate( hireYearArg , hireMonthArg , hireDayOfMonthArg ) ;
}
@Override
String s
= "Employee{ name: " + this .
firstName + " " + this .
lastName + " | birthDate: " + this .
birthDate + " | hireDate: " + hireDate
+ " }" ; return s;
}
}
class MiniDate {
// For teaching purposes only. In real work, use `LocalDate` class bundled with Java.
private int year , month , dayOfMonth ;
public MiniDate( int yearArg , int monthArg , int dayOfMonthArg ) {
this .year = yearArg;
this .month = monthArg;
this .dayOfMonth = dayOfMonthArg;
}
@Override
// Generate string in standard ISO 8601 format, padding with zeros as needed.
String s
= this .
year + "-" + String .
format ( "%02d" ,
this .
month ) + "-" + String .
format ( "%02d" ,
this .
dayOfMonth ) ; return s ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCU1pbmlEYXRlIGJpcnRoRGF0ZSA9IG5ldyBNaW5pRGF0ZSggMTk2NyAsIDEgLCAyMyApOwoJCU1pbmlEYXRlIGhpcmVEYXRlID0gbmV3IE1pbmlEYXRlKCAyMDE2ICwgMiAsIDI4ICk7CgkJRW1wbG95ZWUgZTEgPSBuZXcgRW1wbG95ZWUoICJXZW5keSIgLCAiTWVsdm9pbiIgLCBiaXJ0aERhdGUgLCBoaXJlRGF0ZSApOwoJCVN5c3RlbS5vdXQucHJpbnRsbiggZTEgKTsKCQkKCQlFbXBsb3llZSBlMiA9IG5ldyBFbXBsb3llZSggIkxpc2EiICwgIkNvbGVtYW4iICwgMTk2OCAsIDIgLCAyNCAsIDIwMTYgLCA0ICwgMTQgKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oIGUyICk7CgkJCgkJLy8gRllJOiBJbiByZWFsIHdvcmssIHVzZSB0aGUgZXhpc3RpbmcgYExvY2FsRGF0ZWAgY2xhc3MgcmF0aGVyIHRoYW4gaW52ZW50IHlvdXIgb3duIGRhdGUtdGltZSBjbGFzcy4KCQkvLyBMb2NhbERhdGUgYmlydGhEYXRlID0gTG9jYWxEYXRlLm9mKCAxOTY3ICwgMSAsIDIzICk7Cgl9Cn0KCmNsYXNzIEVtcGxveWVlIHsKCXByaXZhdGUgU3RyaW5nIGZpcnN0TmFtZSAsIGxhc3ROYW1lIDsKCXByaXZhdGUgTWluaURhdGUgYmlydGhEYXRlICwgaGlyZURhdGUgOwoJCglwdWJsaWMgRW1wbG95ZWUoIFN0cmluZyBmaXJzdE5hbWVBcmcgLCBTdHJpbmcgbGFzdE5hbWVBcmcgLCBNaW5pRGF0ZSBiaXJ0aERhdGVBcmcgLCBNaW5pRGF0ZSBoaXJlRGF0ZUFyZyApIHsKCQl0aGlzLmZpcnN0TmFtZSA9IGZpcnN0TmFtZUFyZzsKCQl0aGlzLmxhc3ROYW1lID0gbGFzdE5hbWVBcmc7CgkJdGhpcy5iaXJ0aERhdGUgPSBiaXJ0aERhdGVBcmc7CgkJdGhpcy5oaXJlRGF0ZSA9IGhpcmVEYXRlQXJnOwoJfQoJCglwdWJsaWMgRW1wbG95ZWUoIFN0cmluZyBmaXJzdE5hbWVBcmcgLCBTdHJpbmcgbGFzdE5hbWVBcmcgLCBpbnQgYmlydGhZZWFyQXJnICwgaW50IGJpcnRoTW9udGhBcmcgLCBpbnQgYmlydGhEYXlPZk1vbnRoQXJnICwgaW50IGhpcmVZZWFyQXJnICwgaW50IGhpcmVNb250aEFyZyAsIGludCBoaXJlRGF5T2ZNb250aEFyZyAgKSB7CgkJdGhpcy5maXJzdE5hbWUgPSBmaXJzdE5hbWVBcmc7CgkJdGhpcy5sYXN0TmFtZSA9IGxhc3ROYW1lQXJnOwoJCXRoaXMuYmlydGhEYXRlID0gbmV3IE1pbmlEYXRlKCBiaXJ0aFllYXJBcmcgLCBiaXJ0aE1vbnRoQXJnICwgYmlydGhEYXlPZk1vbnRoQXJnICk7CgkJdGhpcy5oaXJlRGF0ZSA9IG5ldyBNaW5pRGF0ZSggaGlyZVllYXJBcmcgLCBoaXJlTW9udGhBcmcgLCBoaXJlRGF5T2ZNb250aEFyZyApOwoJfQoJCglAT3ZlcnJpZGUKCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CgkJU3RyaW5nIHMgPSAiRW1wbG95ZWV7IG5hbWU6ICIgKyB0aGlzLmZpcnN0TmFtZSArICIgIiArIHRoaXMubGFzdE5hbWUgKyAiIHwgYmlydGhEYXRlOiAiICsgdGhpcy5iaXJ0aERhdGUgKyAiIHwgaGlyZURhdGU6ICIgKyBoaXJlRGF0ZSArICIgfSIgOwoJCXJldHVybiBzOwoJfQp9CgpjbGFzcyBNaW5pRGF0ZSB7CgkvLyBGb3IgdGVhY2hpbmcgcHVycG9zZXMgb25seS4gSW4gcmVhbCB3b3JrLCB1c2UgYExvY2FsRGF0ZWAgY2xhc3MgYnVuZGxlZCB3aXRoIEphdmEuCglwcml2YXRlIGludCB5ZWFyICwgbW9udGggLCBkYXlPZk1vbnRoIDsKCQoJcHVibGljIE1pbmlEYXRlKCBpbnQgeWVhckFyZyAsIGludCBtb250aEFyZyAsIGludCBkYXlPZk1vbnRoQXJnICkgewoJCXRoaXMueWVhciA9IHllYXJBcmc7CgkJdGhpcy5tb250aCA9IG1vbnRoQXJnOwoJCXRoaXMuZGF5T2ZNb250aCA9IGRheU9mTW9udGhBcmc7Cgl9CgkKCUBPdmVycmlkZQoJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKCQkvLyBHZW5lcmF0ZSBzdHJpbmcgaW4gc3RhbmRhcmQgSVNPIDg2MDEgZm9ybWF0LCBwYWRkaW5nIHdpdGggemVyb3MgYXMgbmVlZGVkLgoJCVN0cmluZyBzID0gdGhpcy55ZWFyICsgIi0iICsgU3RyaW5nLmZvcm1hdCggIiUwMmQiLCB0aGlzLm1vbnRoICkgKyAiLSIgKyBTdHJpbmcuZm9ybWF0KCAiJTAyZCIsIHRoaXMuZGF5T2ZNb250aCApIDsKCQlyZXR1cm4gcyA7Cgl9Cn0=