Merge pull request #8125 from eugenp/revert-8119-BAEL-3275-2

Revert "BAEL-3275: Using blocking queue for pub-sub"
This commit is contained in:
Eric Martin
2019-10-31 20:43:47 -05:00
committed by GitHub
parent db85c8f275
commit 3225470df5
20543 changed files with 1642750 additions and 0 deletions
@@ -0,0 +1,35 @@
package com.baeldung.commons.beanutils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Course {
private String name;
private List<String> codes;
private Map<String, Student> enrolledStudent = new HashMap<String, Student>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getCodes() {
return codes;
}
public void setCodes(List<String> codes) {
this.codes = codes;
}
public void setEnrolledStudent(String enrolledId, Student student) {
enrolledStudent.put(enrolledId, student);
}
public Student getEnrolledStudent(String enrolledId) {
return enrolledStudent.get(enrolledId);
}
}
@@ -0,0 +1,35 @@
package com.baeldung.commons.beanutils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CourseEntity {
private String name;
private List<String> codes;
private Map<String, Student> students = new HashMap<String, Student>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getCodes() {
return codes;
}
public void setCodes(List<String> codes) {
this.codes = codes;
}
public void setStudent(String id, Student student) {
students.put(id, student);
}
public Student getStudent(String enrolledId) {
return students.get(enrolledId);
}
}
@@ -0,0 +1,34 @@
package com.baeldung.commons.beanutils;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
public class CourseService {
public static void setValues(Course course, String name, List<String> codes) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// Setting the simple properties
PropertyUtils.setSimpleProperty(course, "name", name);
PropertyUtils.setSimpleProperty(course, "codes", codes);
}
public static void setIndexedValue(Course course, int codeIndex, String code) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// Setting the indexed properties
PropertyUtils.setIndexedProperty(course, "codes[" + codeIndex + "]", code);
}
public static void setMappedValue(Course course, String enrollId, Student student) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
// Setting the mapped properties
PropertyUtils.setMappedProperty(course, "enrolledStudent(" + enrollId + ")", student);
}
public static String getNestedValue(Course course, String enrollId, String nestedPropertyName) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return (String) PropertyUtils.getNestedProperty(course, "enrolledStudent(" + enrollId + ")." + nestedPropertyName);
}
public static void copyProperties(Course course, CourseEntity courseEntity) throws IllegalAccessException, InvocationTargetException {
BeanUtils.copyProperties(courseEntity, course);
}
}
@@ -0,0 +1,13 @@
package com.baeldung.commons.beanutils;
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@@ -0,0 +1,23 @@
package com.baeldung.commons.chain;
import org.apache.commons.chain.Command;
import org.apache.commons.chain.Context;
import static com.baeldung.commons.chain.AtmConstants.AMOUNT_LEFT_TO_BE_WITHDRAWN;
public abstract class AbstractDenominationDispenser implements Command {
@Override
public boolean execute(Context context) throws Exception {
int amountLeftToBeWithdrawn = (int) context.get(AMOUNT_LEFT_TO_BE_WITHDRAWN);
if (amountLeftToBeWithdrawn >= getDenominationValue()) {
context.put(getDenominationString(), amountLeftToBeWithdrawn / getDenominationValue());
context.put(AMOUNT_LEFT_TO_BE_WITHDRAWN, amountLeftToBeWithdrawn % getDenominationValue());
}
return false;
}
protected abstract String getDenominationString();
protected abstract int getDenominationValue();
}
@@ -0,0 +1,13 @@
package com.baeldung.commons.chain;
import org.apache.commons.chain.impl.CatalogBase;
import static com.baeldung.commons.chain.AtmConstants.ATM_WITHDRAWAL_CHAIN;
public class AtmCatalog extends CatalogBase {
public AtmCatalog() {
super();
addCommand(ATM_WITHDRAWAL_CHAIN, new AtmWithdrawalChain());
}
}
@@ -0,0 +1,10 @@
package com.baeldung.commons.chain;
public class AtmConstants {
public static final String TOTAL_AMOUNT_TO_BE_WITHDRAWN = "totalAmountToBeWithdrawn";
public static final String AMOUNT_LEFT_TO_BE_WITHDRAWN = "amountLeftToBeWithdrawn";
public static final String NO_OF_HUNDREDS_DISPENSED = "noOfHundredsDispensed";
public static final String NO_OF_FIFTIES_DISPENSED = "noOfFiftiesDispensed";
public static final String NO_OF_TENS_DISPENSED = "noOfTensDispensed";
public static final String ATM_WITHDRAWAL_CHAIN = "atmWithdrawalChain";
}
@@ -0,0 +1,52 @@
package com.baeldung.commons.chain;
import org.apache.commons.chain.impl.ContextBase;
public class AtmRequestContext extends ContextBase {
int totalAmountToBeWithdrawn;
int noOfHundredsDispensed;
int noOfFiftiesDispensed;
int noOfTensDispensed;
int amountLeftToBeWithdrawn;
public int getTotalAmountToBeWithdrawn() {
return totalAmountToBeWithdrawn;
}
public void setTotalAmountToBeWithdrawn(int totalAmountToBeWithdrawn) {
this.totalAmountToBeWithdrawn = totalAmountToBeWithdrawn;
}
public int getNoOfHundredsDispensed() {
return noOfHundredsDispensed;
}
public void setNoOfHundredsDispensed(int noOfHundredsDispensed) {
this.noOfHundredsDispensed = noOfHundredsDispensed;
}
public int getNoOfFiftiesDispensed() {
return noOfFiftiesDispensed;
}
public void setNoOfFiftiesDispensed(int noOfFiftiesDispensed) {
this.noOfFiftiesDispensed = noOfFiftiesDispensed;
}
public int getNoOfTensDispensed() {
return noOfTensDispensed;
}
public void setNoOfTensDispensed(int noOfTensDispensed) {
this.noOfTensDispensed = noOfTensDispensed;
}
public int getAmountLeftToBeWithdrawn() {
return amountLeftToBeWithdrawn;
}
public void setAmountLeftToBeWithdrawn(int amountLeftToBeWithdrawn) {
this.amountLeftToBeWithdrawn = amountLeftToBeWithdrawn;
}
}
@@ -0,0 +1,14 @@
package com.baeldung.commons.chain;
import org.apache.commons.chain.impl.ChainBase;
public class AtmWithdrawalChain extends ChainBase {
public AtmWithdrawalChain() {
super();
addCommand(new HundredDenominationDispenser());
addCommand(new FiftyDenominationDispenser());
addCommand(new TenDenominationDispenser());
addCommand(new AuditFilter());
}
}
@@ -0,0 +1,18 @@
package com.baeldung.commons.chain;
import org.apache.commons.chain.Context;
import org.apache.commons.chain.Filter;
public class AuditFilter implements Filter {
@Override
public boolean postprocess(Context context, Exception exception) {
// Send notification to customer & bank.
return false;
}
@Override
public boolean execute(Context context) throws Exception {
return false;
}
}
@@ -0,0 +1,15 @@
package com.baeldung.commons.chain;
import static com.baeldung.commons.chain.AtmConstants.NO_OF_FIFTIES_DISPENSED;
public class FiftyDenominationDispenser extends AbstractDenominationDispenser {
@Override
protected String getDenominationString() {
return NO_OF_FIFTIES_DISPENSED;
}
@Override
protected int getDenominationValue() {
return 50;
}
}
@@ -0,0 +1,15 @@
package com.baeldung.commons.chain;
import static com.baeldung.commons.chain.AtmConstants.NO_OF_HUNDREDS_DISPENSED;
public class HundredDenominationDispenser extends AbstractDenominationDispenser {
@Override
protected String getDenominationString() {
return NO_OF_HUNDREDS_DISPENSED;
}
@Override
protected int getDenominationValue() {
return 100;
}
}
@@ -0,0 +1,15 @@
package com.baeldung.commons.chain;
import static com.baeldung.commons.chain.AtmConstants.NO_OF_TENS_DISPENSED;
public class TenDenominationDispenser extends AbstractDenominationDispenser {
@Override
protected String getDenominationString() {
return NO_OF_TENS_DISPENSED;
}
@Override
protected int getDenominationValue() {
return 10;
}
}
@@ -0,0 +1,37 @@
package com.baeldung.commons.dbutils;
public class Email {
private Integer id;
private Integer employeeId;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Email{" + "id=" + id + ", address=" + address + '}';
}
}
@@ -0,0 +1,67 @@
package com.baeldung.commons.dbutils;
import java.util.Date;
import java.util.List;
public class Employee {
private Integer id;
private String firstName;
private String lastName;
private Double salary;
private Date hiredDate;
private List<Email> emails;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Double getSalary() {
return salary;
}
public void setSalary(Double salary) {
this.salary = salary;
}
public Date getHiredDate() {
return hiredDate;
}
public void setHiredDate(Date hiredDate) {
this.hiredDate = hiredDate;
}
public List<Email> getEmails() {
return emails;
}
public void setEmails(List<Email> emails) {
this.emails = emails;
}
@Override
public String toString() {
return "Employee{" + "id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", salary=" + salary + ", hiredDate=" + hiredDate + '}';
}
}
@@ -0,0 +1,45 @@
package com.baeldung.commons.dbutils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.BasicRowProcessor;
import org.apache.commons.dbutils.BeanProcessor;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;
public class EmployeeHandler extends BeanListHandler<Employee> {
private Connection connection;
public EmployeeHandler(Connection con) {
super(Employee.class, new BasicRowProcessor(new BeanProcessor(getColumnsToFieldsMap())));
this.connection = con;
}
@Override
public List<Employee> handle(ResultSet rs) throws SQLException {
List<Employee> employees = super.handle(rs);
QueryRunner runner = new QueryRunner();
BeanListHandler<Email> handler = new BeanListHandler<>(Email.class);
String query = "SELECT * FROM email WHERE employeeid = ?";
for (Employee employee : employees) {
List<Email> emails = runner.query(connection, query, handler, employee.getId());
employee.setEmails(emails);
}
return employees;
}
public static Map<String, String> getColumnsToFieldsMap() {
Map<String, String> columnsToFieldsMap = new HashMap<>();
columnsToFieldsMap.put("FIRST_NAME", "firstName");
columnsToFieldsMap.put("LAST_NAME", "lastName");
columnsToFieldsMap.put("HIRED_DATE", "hiredDate");
return columnsToFieldsMap;
}
}
@@ -0,0 +1,87 @@
package com.baeldung.commons.lang3;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.concurrent.ConcurrentException;
import org.apache.commons.lang3.concurrent.BackgroundInitializer;
public class BuilderMethods {
private final int intValue;
private final String strSample;
public BuilderMethods(final int newId, final String newName) {
this.intValue = newId;
this.strSample = newName;
}
public int getId() {
return this.intValue;
}
public String getName() {
return this.strSample;
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(this.intValue).append(this.strSample).toHashCode();
}
@Override
public boolean equals(Object obj) {
if (obj instanceof BuilderMethods == false) {
return false;
}
if (this == obj) {
return true;
}
final BuilderMethods otherObject = (BuilderMethods) obj;
return new EqualsBuilder().append(this.intValue, otherObject.intValue).append(this.strSample, otherObject.strSample).isEquals();
}
@Override
public String toString() {
return new ToStringBuilder(this).append("INTVALUE", this.intValue).append("STRINGVALUE", this.strSample).toString();
}
public static void main(final String[] arguments) {
final BuilderMethods simple1 = new BuilderMethods(1, "The First One");
System.out.println(simple1.getName());
System.out.println(simple1.hashCode());
System.out.println(simple1.toString());
SampleLazyInitializer sampleLazyInitializer = new SampleLazyInitializer();
try {
sampleLazyInitializer.get();
} catch (ConcurrentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
SampleBackgroundInitializer sampleBackgroundInitializer = new SampleBackgroundInitializer();
sampleBackgroundInitializer.start();
// Proceed with other tasks instead of waiting for the SampleBackgroundInitializer task to finish.
try {
Object result = sampleBackgroundInitializer.get();
} catch (ConcurrentException e) {
e.printStackTrace();
}
}
}
class SampleBackgroundInitializer extends BackgroundInitializer<String> {
@Override
protected String initialize() throws Exception {
return null;
}
// Any complex task that takes some time
}
@@ -0,0 +1,11 @@
package com.baeldung.commons.lang3;
import org.apache.commons.lang3.concurrent.LazyInitializer;
public class SampleLazyInitializer extends LazyInitializer<SampleObject> {
@Override
protected SampleObject initialize() {
return new SampleObject();
}
}
@@ -0,0 +1,7 @@
package com.baeldung.commons.lang3;
public class SampleObject {
// Ignored
}
@@ -0,0 +1,8 @@
package com.baeldung.commons.lang3.application;
public class Application {
public static void main(String[] args) {
}
}
@@ -0,0 +1,25 @@
package com.baeldung.commons.lang3.beans;
public class User {
private final String name;
private final String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
public String getName() {
return name;
}
public String getEmail() {
return email;
}
@Override
public String toString() {
return "User{" + "name=" + name + ", email=" + email + '}';
}
}
@@ -0,0 +1,11 @@
package com.baeldung.commons.lang3.beans;
import org.apache.commons.lang3.concurrent.LazyInitializer;
public class UserInitializer extends LazyInitializer<User> {
@Override
protected User initialize() {
return new User("John", "john@domain.com");
}
}
@@ -0,0 +1,97 @@
package com.baeldung.commons.math3;
import org.apache.commons.math3.stat.Frequency;
import org.knowm.xchart.CategoryChart;
import org.knowm.xchart.CategoryChartBuilder;
import org.knowm.xchart.SwingWrapper;
import org.knowm.xchart.style.Styler;
import java.util.*;
public class Histogram {
private Map distributionMap;
private int classWidth;
public Histogram() {
distributionMap = new TreeMap();
classWidth = 10;
Map distributionMap = processRawData();
List yData = new ArrayList();
yData.addAll(distributionMap.values());
List xData = Arrays.asList(distributionMap.keySet().toArray());
CategoryChart chart = buildChart(xData, yData);
new SwingWrapper<>(chart).displayChart();
}
private CategoryChart buildChart(List xData, List yData) {
// Create Chart
CategoryChart chart = new CategoryChartBuilder().width(800).height(600)
.title("Age Distribution")
.xAxisTitle("Age Group")
.yAxisTitle("Frequency")
.build();
chart.getStyler().setLegendPosition(Styler.LegendPosition.InsideNW);
chart.getStyler().setAvailableSpaceFill(0.99);
chart.getStyler().setOverlapped(true);
chart.addSeries("age group", xData, yData);
return chart;
}
private Map processRawData() {
List<Integer> datasetList = Arrays.asList(
36, 25, 38, 46, 55, 68, 72,
55, 36, 38, 67, 45, 22, 48,
91, 46, 52, 61, 58, 55);
Frequency frequency = new Frequency();
datasetList.forEach(d -> frequency.addValue(Double.parseDouble(d.toString())));
datasetList.stream()
.map(d -> Double.parseDouble(d.toString()))
.distinct()
.forEach(observation -> {
long observationFrequency = frequency.getCount(observation);
int upperBoundary = (observation > classWidth)
? Math.multiplyExact( (int) Math.ceil(observation / classWidth), classWidth)
: classWidth;
int lowerBoundary = (upperBoundary > classWidth)
? Math.subtractExact(upperBoundary, classWidth)
: 0;
String bin = lowerBoundary + "-" + upperBoundary;
updateDistributionMap(lowerBoundary, bin, observationFrequency);
});
return distributionMap;
}
private void updateDistributionMap(int lowerBoundary, String bin, long observationFrequency) {
int prevLowerBoundary = (lowerBoundary > classWidth) ? lowerBoundary - classWidth : 0;
String prevBin = prevLowerBoundary + "-" + lowerBoundary;
if(!distributionMap.containsKey(prevBin))
distributionMap.put(prevBin, 0);
if(!distributionMap.containsKey(bin)) {
distributionMap.put(bin, observationFrequency);
}
else {
long oldFrequency = Long.parseLong(distributionMap.get(bin).toString());
distributionMap.replace(bin, oldFrequency + observationFrequency);
}
}
public static void main(String[] args) {
new Histogram();
}
}