/* package whatever; // don't place package name! */
import java.util.* ;
import java.math.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
PriceService priceService = new PriceService( ) ;
ProductPrice productPrice = new ProductPrice( ) ;
ProductMarketPrice productMarketPrice = priceService.getPrice ( productPrice, 1L) ;
System .
out .
println ( productMarketPrice.
getAdvice ( ) ) ;
productMarketPrice = priceService.getPrice ( null , 1L) ;
System .
out .
println ( productMarketPrice.
getAdvice ( ) ) ; }
}
class PriceService {
//@EJB
MarketPriceService marketPriceService = new MarketPriceService( ) ;
public ProductMarketPrice getPrice
( ProductPrice productPrice,
Long productId
) { boolean isFromProduct = false ;
if ( productPrice != null ) {
price = productPrice.getPrice ( ) ;
date = productPrice.getRegisterDate ( ) ;
isFromProduct = true ; // i need to know if the values are from 'one' or 'x'
} else {
MarketPrice marketPrice = this .marketPriceService .findTheMarketPriceForProduct ( productId) ;
price = marketPrice.getPrice ( ) ;
date = marketPrice.getDate ( ) ;
}
return new ProductMarketPrice( price, date, isFromProduct) ;
}
}
class ProductPrice {
}
public Date getRegisterDate
( ) { }
}
class ProductMarketPrice {
private boolean isFromProduct;
public ProductMarketPrice
( BigDecimal price,
Date date,
boolean isFromProduct
) { this .price = price;
this .date = date;
this .isFromProduct = isFromProduct;
}
String answer
= this .
isFromProduct ? "yes" : "no" ; return "Hi, user! This price and date is from our Product? " + answer + ". So, be sure about that when you do your stuff." ;
}
}
class MarketPriceService {
public MarketPrice findTheMarketPriceForProduct
( Long productId
) { return new MarketPrice( ) ;
}
}
class MarketPrice {
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5tYXRoLio7CmltcG9ydCBqYXZhLmxhbmcuKjsKaW1wb3J0IGphdmEuaW8uKjsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJUHJpY2VTZXJ2aWNlIHByaWNlU2VydmljZSA9IG5ldyBQcmljZVNlcnZpY2UoKTsKCQlQcm9kdWN0UHJpY2UgcHJvZHVjdFByaWNlID0gbmV3IFByb2R1Y3RQcmljZSgpOwoJCVByb2R1Y3RNYXJrZXRQcmljZSBwcm9kdWN0TWFya2V0UHJpY2UgPSBwcmljZVNlcnZpY2UuZ2V0UHJpY2UocHJvZHVjdFByaWNlLCAxTCk7CgkJU3lzdGVtLm91dC5wcmludGxuKHByb2R1Y3RNYXJrZXRQcmljZS5nZXRBZHZpY2UoKSk7CgkJCgkJcHJvZHVjdE1hcmtldFByaWNlID0gcHJpY2VTZXJ2aWNlLmdldFByaWNlKG51bGwsIDFMKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4ocHJvZHVjdE1hcmtldFByaWNlLmdldEFkdmljZSgpKTsKCX0KfQoKY2xhc3MgUHJpY2VTZXJ2aWNlIHsKCQoJLy9ARUpCCglNYXJrZXRQcmljZVNlcnZpY2UgbWFya2V0UHJpY2VTZXJ2aWNlID0gbmV3IE1hcmtldFByaWNlU2VydmljZSgpOwoJCglwdWJsaWMgUHJvZHVjdE1hcmtldFByaWNlIGdldFByaWNlKFByb2R1Y3RQcmljZSBwcm9kdWN0UHJpY2UsIExvbmcgcHJvZHVjdElkKSB7CgkgICAgQmlnRGVjaW1hbCBwcmljZSA9IEJpZ0RlY2ltYWwuWkVSTzsKCSAgICBEYXRlIGRhdGUgPSBudWxsOwoJICAgIGJvb2xlYW4gaXNGcm9tUHJvZHVjdCA9IGZhbHNlOwoJICAgIGlmIChwcm9kdWN0UHJpY2UgIT0gbnVsbCkgewoJICAgICAgICBwcmljZSA9IHByb2R1Y3RQcmljZS5nZXRQcmljZSgpOwoJICAgICAgICBkYXRlID0gcHJvZHVjdFByaWNlLmdldFJlZ2lzdGVyRGF0ZSgpOwoJICAgICAgICBpc0Zyb21Qcm9kdWN0ID0gdHJ1ZTsgLy8gaSBuZWVkIHRvIGtub3cgaWYgdGhlIHZhbHVlcyBhcmUgZnJvbSAnb25lJyBvciAneCcKCSAgICB9IGVsc2UgewoJICAgICAgICBNYXJrZXRQcmljZSBtYXJrZXRQcmljZSA9IHRoaXMubWFya2V0UHJpY2VTZXJ2aWNlLmZpbmRUaGVNYXJrZXRQcmljZUZvclByb2R1Y3QocHJvZHVjdElkKTsKCSAgICAgICAgcHJpY2UgPSBtYXJrZXRQcmljZS5nZXRQcmljZSgpOwoJICAgICAgICBkYXRlID0gbWFya2V0UHJpY2UuZ2V0RGF0ZSgpOwoJICAgIH0KCQoJICAgIHJldHVybiBuZXcgUHJvZHVjdE1hcmtldFByaWNlKHByaWNlLCBkYXRlLCBpc0Zyb21Qcm9kdWN0KTsKCX0KCQp9CgpjbGFzcyBQcm9kdWN0UHJpY2UgewoJcHVibGljIEJpZ0RlY2ltYWwgZ2V0UHJpY2UoKSB7CgkJcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCIxLjAwIik7Cgl9CgkKCXB1YmxpYyBEYXRlIGdldFJlZ2lzdGVyRGF0ZSgpIHsKCQlyZXR1cm4gbmV3IERhdGUoKTsKCX0KfQoKCmNsYXNzIFByb2R1Y3RNYXJrZXRQcmljZSB7Cglwcml2YXRlIEJpZ0RlY2ltYWwgcHJpY2U7Cglwcml2YXRlIERhdGUgZGF0ZTsKCXByaXZhdGUgYm9vbGVhbiBpc0Zyb21Qcm9kdWN0OwoJcHVibGljIFByb2R1Y3RNYXJrZXRQcmljZShCaWdEZWNpbWFsIHByaWNlLCBEYXRlIGRhdGUsIGJvb2xlYW4gaXNGcm9tUHJvZHVjdCl7CgkJdGhpcy5wcmljZSA9IHByaWNlOwoJCXRoaXMuZGF0ZSA9IGRhdGU7CgkJdGhpcy5pc0Zyb21Qcm9kdWN0ID0gaXNGcm9tUHJvZHVjdDsKCX0KCXB1YmxpYyBTdHJpbmcgZ2V0QWR2aWNlKCkgewoJCVN0cmluZyBhbnN3ZXIgPSB0aGlzLmlzRnJvbVByb2R1Y3QgPyAieWVzIiA6ICJubyI7CgkJcmV0dXJuICJIaSwgdXNlciEgVGhpcyBwcmljZSBhbmQgZGF0ZSBpcyBmcm9tIG91ciBQcm9kdWN0PyAiICsgYW5zd2VyICsgIi4gU28sIGJlIHN1cmUgYWJvdXQgdGhhdCB3aGVuIHlvdSBkbyB5b3VyIHN0dWZmLiI7Cgl9Cn0KCmNsYXNzIE1hcmtldFByaWNlU2VydmljZSB7CglwdWJsaWMgTWFya2V0UHJpY2UgZmluZFRoZU1hcmtldFByaWNlRm9yUHJvZHVjdChMb25nIHByb2R1Y3RJZCkgewoJCXJldHVybiBuZXcgTWFya2V0UHJpY2UoKTsKCX0KfQoKY2xhc3MgTWFya2V0UHJpY2UgewoJcHVibGljIEJpZ0RlY2ltYWwgZ2V0UHJpY2UoKSB7CgkJcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCIyLjAwIik7Cgl9CgkKCXB1YmxpYyBEYXRlIGdldERhdGUoKSB7CgkJcmV0dXJuIG5ldyBEYXRlKCk7Cgl9Cn0=