/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class Property {
// it's empty but can hold some info, like
//public Person owner; // owners handle
}
class FIO extends Property {
firstName = f;
name = s;
batyaName = b;
}
}
class DateHolder extends Property {
public Date date
; //does java have Date? Replace then.
public DateHolder
( Date d
) { date = d;
}
}
class PeopleHolder extends Property {
private ArrayList<Person> people;
public PeopleHolder() {
people = new ArrayList<Person>();
}
public PeopleHolder addPerson( Person p ) {
people.add( p );
return this;
}
public PeopleHolder removePerson( Person p ) {
// TODO
return this;
}
}
class Description extends Property {
public Description
( String d
) { description = d;
}
}
class Person {
private HashMap
<String, Property
> properties
;
public Person
( String type
) { this.type = type;
properties
= new HashMap
<String, Property
>(); }
public Person addProperty
( String s, Property p
) { properties[ s ] = p;
return this;
}
}
class PersonList {
private List<Person> p;
public PersonList() {
p = new ArrayList<Person>();
}
// TODO: methods like get/add/remove/find/kill/etc.
}
class Ideone
{
{
// TODO: write factory class
Person typicalWorker = new Person( "worker" );
typicalWorker.addProperty( "FIO", new FIO( "Иванов", "Иван", "Иванович" ) )
.addProperty( "birth date", new DateHolder( THIS_GUY_BIRTH_DATE ) )
.addProperty( "employ date", new DateHolder( THIS_GUY_EMPLOY_DATE ) );
PeopleHolder slaves = new PeopleHolder();
slaves.addPerson( typicalWorker );
Person manager = new Person( "manager" );
manager.addProperty( "FIO", new FIO( "Петров", "Колян", "Степанович" ) )
.addProperty( "birth date", new DateHolder( THIS_GUY_BIRTH_DATE ) )
.addProperty( "employ date", new DateHolder( THIS_GUY_EMPLOY_DATE ) )
.addProperty( "slaves", slaves );
Person secretary = new Person( "other" );
secretary.addProperty( "FIO", new FIO( "Сидорова", "Мария", "Никитична" ) )
.addProperty( "birth date", new DateHolder( THIS_GUY_BIRTH_DATE ) )
.addProperty( "employ date", new DateHolder( THIS_GUY_EMPLOY_DATE ) )
.addProperty( "description", new Description( "Секретарша. Неплохо сосёт." ) );
PersonList pl = new PersonList();
pl.add( typicalWorker )
.add( manager )
.add( secretary );
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgpjbGFzcyBQcm9wZXJ0eSB7CgkvLyBpdCdzIGVtcHR5IGJ1dCBjYW4gaG9sZCBzb21lIGluZm8sIGxpa2UKCS8vcHVibGljIFBlcnNvbiBvd25lcjsgLy8gb3duZXJzIGhhbmRsZQp9CgpjbGFzcyBGSU8gZXh0ZW5kcyBQcm9wZXJ0eSB7CglwdWJsaWMgU3RyaW5nIGZpcnN0TmFtZTsKCXB1YmxpYyBTdHJpbmcgbmFtZTsKCXB1YmxpYyBTdHJpbmcgYmF0eWFOYW1lOwoJCglwdWJsaWMgRklPKCBTdHJpbmcgZiwgU3RyaW5nIHMsIFN0cmluZyBiICkgewoJCWZpcnN0TmFtZSA9IGY7CgkJbmFtZSA9IHM7CgkJYmF0eWFOYW1lID0gYjsKCX0KfQoKY2xhc3MgRGF0ZUhvbGRlciBleHRlbmRzIFByb3BlcnR5IHsKCXB1YmxpYyBEYXRlIGRhdGU7IC8vZG9lcyBqYXZhIGhhdmUgRGF0ZT8gUmVwbGFjZSB0aGVuLgoJCglwdWJsaWMgRGF0ZUhvbGRlciggRGF0ZSBkICkgewoJCWRhdGUgPSBkOwoJfQp9CgpjbGFzcyBQZW9wbGVIb2xkZXIgZXh0ZW5kcyBQcm9wZXJ0eSB7Cglwcml2YXRlIEFycmF5TGlzdDxQZXJzb24+IHBlb3BsZTsKCQoJcHVibGljIFBlb3BsZUhvbGRlcigpIHsKCQlwZW9wbGUgPSBuZXcgQXJyYXlMaXN0PFBlcnNvbj4oKTsKCX0KCQoJcHVibGljIFBlb3BsZUhvbGRlciBhZGRQZXJzb24oIFBlcnNvbiBwICkgewoJCXBlb3BsZS5hZGQoIHAgKTsKCQlyZXR1cm4gdGhpczsKCX0KCQoJcHVibGljIFBlb3BsZUhvbGRlciByZW1vdmVQZXJzb24oIFBlcnNvbiBwICkgewoJCS8vIFRPRE8KCQlyZXR1cm4gdGhpczsKCX0KfQoKY2xhc3MgRGVzY3JpcHRpb24gZXh0ZW5kcyBQcm9wZXJ0eSB7CglwdWJsaWMgU3RyaW5nIGRlc2NyaXB0aW9uOwoJCglwdWJsaWMgRGVzY3JpcHRpb24oIFN0cmluZyBkICkgewoJCWRlc2NyaXB0aW9uID0gZDsKCX0KfQoKY2xhc3MgUGVyc29uIHsKCXB1YmxpYyBTdHJpbmcgdHlwZTsKCXByaXZhdGUgSGFzaE1hcDxTdHJpbmcsIFByb3BlcnR5PiBwcm9wZXJ0aWVzOwoJCglwdWJsaWMgUGVyc29uKCBTdHJpbmcgdHlwZSApIHsKCQl0aGlzLnR5cGUgPSB0eXBlOwoJCXByb3BlcnRpZXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFByb3BlcnR5PigpOwoJfQoJCglwdWJsaWMgUGVyc29uIGFkZFByb3BlcnR5KCBTdHJpbmcgcywgUHJvcGVydHkgcCApIHsKCQlwcm9wZXJ0aWVzWyBzIF0gPSBwOwoJCXJldHVybiB0aGlzOwoJfQp9CgpjbGFzcyBQZXJzb25MaXN0IHsKCXByaXZhdGUgTGlzdDxQZXJzb24+IHA7CgkKCXB1YmxpYyBQZXJzb25MaXN0KCkgewoJCXAgPSBuZXcgQXJyYXlMaXN0PFBlcnNvbj4oKTsKCX0KCQoJLy8gVE9ETzogbWV0aG9kcyBsaWtlIGdldC9hZGQvcmVtb3ZlL2ZpbmQva2lsbC9ldGMuCn0KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIFRPRE86IHdyaXRlIGZhY3RvcnkgY2xhc3MKCQlQZXJzb24gdHlwaWNhbFdvcmtlciA9IG5ldyBQZXJzb24oICJ3b3JrZXIiICk7CgkJdHlwaWNhbFdvcmtlci5hZGRQcm9wZXJ0eSggIkZJTyIsIG5ldyBGSU8oICLQmNCy0LDQvdC+0LIiLCAi0JjQstCw0L0iLCAi0JjQstCw0L3QvtCy0LjRhyIgKSApCgkJCQkJIC5hZGRQcm9wZXJ0eSggImJpcnRoIGRhdGUiLCBuZXcgRGF0ZUhvbGRlciggVEhJU19HVVlfQklSVEhfREFURSApICkKCQkJCQkgLmFkZFByb3BlcnR5KCAiZW1wbG95IGRhdGUiLCBuZXcgRGF0ZUhvbGRlciggVEhJU19HVVlfRU1QTE9ZX0RBVEUgKSApOwoJCQkJCSAKCQlQZW9wbGVIb2xkZXIgc2xhdmVzID0gbmV3IFBlb3BsZUhvbGRlcigpOwoJCXNsYXZlcy5hZGRQZXJzb24oIHR5cGljYWxXb3JrZXIgKTsKCQlQZXJzb24gbWFuYWdlciA9IG5ldyBQZXJzb24oICJtYW5hZ2VyIiApOwoJCW1hbmFnZXIuYWRkUHJvcGVydHkoICJGSU8iLCBuZXcgRklPKCAi0J/QtdGC0YDQvtCyIiwgItCa0L7Qu9GP0L0iLCAi0KHRgtC10L/QsNC90L7QstC40YciICkgKQoJCQkgICAuYWRkUHJvcGVydHkoICJiaXJ0aCBkYXRlIiwgbmV3IERhdGVIb2xkZXIoIFRISVNfR1VZX0JJUlRIX0RBVEUgKSApCgkJCSAgIC5hZGRQcm9wZXJ0eSggImVtcGxveSBkYXRlIiwgbmV3IERhdGVIb2xkZXIoIFRISVNfR1VZX0VNUExPWV9EQVRFICkgKQoJCQkgICAuYWRkUHJvcGVydHkoICJzbGF2ZXMiLCBzbGF2ZXMgKTsKCQkKCQlQZXJzb24gc2VjcmV0YXJ5ID0gbmV3IFBlcnNvbiggIm90aGVyIiApOwoJCXNlY3JldGFyeS5hZGRQcm9wZXJ0eSggIkZJTyIsIG5ldyBGSU8oICLQodC40LTQvtGA0L7QstCwIiwgItCc0LDRgNC40Y8iLCAi0J3QuNC60LjRgtC40YfQvdCwIiApICkKCQkJCSAuYWRkUHJvcGVydHkoICJiaXJ0aCBkYXRlIiwgbmV3IERhdGVIb2xkZXIoIFRISVNfR1VZX0JJUlRIX0RBVEUgKSApCgkJCQkgLmFkZFByb3BlcnR5KCAiZW1wbG95IGRhdGUiLCBuZXcgRGF0ZUhvbGRlciggVEhJU19HVVlfRU1QTE9ZX0RBVEUgKSApCgkJCQkgLmFkZFByb3BlcnR5KCAiZGVzY3JpcHRpb24iLCBuZXcgRGVzY3JpcHRpb24oICLQodC10LrRgNC10YLQsNGA0YjQsC4g0J3QtdC/0LvQvtGF0L4g0YHQvtGB0ZHRgi4iICkgKTsKCQkJCSAKCQlQZXJzb25MaXN0IHBsID0gbmV3IFBlcnNvbkxpc3QoKTsKCQlwbC5hZGQoIHR5cGljYWxXb3JrZXIgKQoJCSAgLmFkZCggbWFuYWdlciApCgkJICAuYWRkKCBzZWNyZXRhcnkgKTsKCX0KfQ==
Main.java:68: error: incompatible types
properties[ s ] = p;
^
required: int
found: String
Main.java:68: error: array required, but HashMap<String,Property> found
properties[ s ] = p;
^
Main.java:90: error: cannot find symbol
.addProperty( "employ date", new DateHolder( THIS_GUY_EMPLOY_DATE ) );
^
symbol: variable THIS_GUY_EMPLOY_DATE
location: class Ideone
Main.java:89: error: cannot find symbol
.addProperty( "birth date", new DateHolder( THIS_GUY_BIRTH_DATE ) )
^
symbol: variable THIS_GUY_BIRTH_DATE
location: class Ideone
Main.java:93: error: cannot find symbol
slaves.add( typicalWorker );
^
symbol: method add(Person)
location: variable slaves of type PeopleHolder
Main.java:97: error: cannot find symbol
.addProperty( "employ date", new DateHolder( THIS_GUY_EMPLOY_DATE ) )
^
symbol: variable THIS_GUY_EMPLOY_DATE
location: class Ideone
Main.java:96: error: cannot find symbol
.addProperty( "birth date", new DateHolder( THIS_GUY_BIRTH_DATE ) )
^
symbol: variable THIS_GUY_BIRTH_DATE
location: class Ideone
Main.java:103: error: cannot find symbol
.addProperty( "employ date", new DateHolder( THIS_GUY_EMPLOY_DATE ) )
^
symbol: variable THIS_GUY_EMPLOY_DATE
location: class Ideone
Main.java:102: error: cannot find symbol
.addProperty( "birth date", new DateHolder( THIS_GUY_BIRTH_DATE ) )
^
symbol: variable THIS_GUY_BIRTH_DATE
location: class Ideone
Main.java:107: error: cannot find symbol
pl.add( typicalWorker )
^
symbol: method add(Person)
location: variable pl of type PersonList
10 errors