Reformat rest of the design patterns - Issue #224
This commit is contained in:
@ -1,46 +1,44 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
* Base class for order processing filters.
|
||||
* Handles chain management.
|
||||
* Base class for order processing filters. Handles chain management.
|
||||
*
|
||||
*/
|
||||
public abstract class AbstractFilter implements Filter {
|
||||
|
||||
private Filter next;
|
||||
|
||||
public AbstractFilter() {
|
||||
}
|
||||
private Filter next;
|
||||
|
||||
public AbstractFilter(Filter next) {
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Filter filter) {
|
||||
this.next = filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getNext() {
|
||||
return next;
|
||||
}
|
||||
public AbstractFilter() {}
|
||||
|
||||
@Override
|
||||
public Filter getLast() {
|
||||
Filter last = this;
|
||||
while (last.getNext() != null) {
|
||||
last = last.getNext();
|
||||
}
|
||||
return last;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
if (getNext() != null) {
|
||||
return getNext().execute(order);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
public AbstractFilter(Filter next) {
|
||||
this.next = next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Filter filter) {
|
||||
this.next = filter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getNext() {
|
||||
return next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Filter getLast() {
|
||||
Filter last = this;
|
||||
while (last.getNext() != null) {
|
||||
last = last.getNext();
|
||||
}
|
||||
return last;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
if (getNext() != null) {
|
||||
return getNext().execute(order);
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,19 +1,20 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
* This filter is responsible for checking/filtering the input in the address field.
|
||||
* Concrete implementation of filter This filter is responsible for checking/filtering the input in
|
||||
* the address field.
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class AddressFilter extends AbstractFilter {
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getAddress() == null || order.getAddress().isEmpty()) {
|
||||
return result + "Invalid address! ";
|
||||
} else
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getAddress() == null || order.getAddress().isEmpty()) {
|
||||
return result + "Invalid address! ";
|
||||
} else
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -2,50 +2,46 @@ package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
*
|
||||
* When a request enters a Web application, it often must pass several entrance
|
||||
* tests prior to the main processing stage. For example,
|
||||
* - Has the client been authenticated?
|
||||
* - Does the client have a valid session?
|
||||
* - Is the client's IP address from a trusted network?
|
||||
* - Does the request path violate any constraints?
|
||||
* - What encoding does the client use to send the data?
|
||||
* - Do we support the browser type of the client?
|
||||
* Some of these checks are tests, resulting in a yes or no answer that determines
|
||||
* whether processing will continue. Other checks manipulate the incoming data
|
||||
* When a request enters a Web application, it often must pass several entrance tests prior to the
|
||||
* main processing stage. For example, - Has the client been authenticated? - Does the client have a
|
||||
* valid session? - Is the client's IP address from a trusted network? - Does the request path
|
||||
* violate any constraints? - What encoding does the client use to send the data? - Do we support
|
||||
* the browser type of the client? Some of these checks are tests, resulting in a yes or no answer
|
||||
* that determines whether processing will continue. Other checks manipulate the incoming data
|
||||
* stream into a form suitable for processing.
|
||||
* <p>
|
||||
* The classic solution consists of a series of conditional checks, with any failed
|
||||
* check aborting the request. Nested if/else statements are a standard strategy,
|
||||
* but this solution leads to code fragility and a copy-and-paste style of programming,
|
||||
* because the flow of the filtering and the action of the filters is compiled into
|
||||
* the application.
|
||||
* The classic solution consists of a series of conditional checks, with any failed check aborting
|
||||
* the request. Nested if/else statements are a standard strategy, but this solution leads to code
|
||||
* fragility and a copy-and-paste style of programming, because the flow of the filtering and the
|
||||
* action of the filters is compiled into the application.
|
||||
* <p>
|
||||
* The key to solving this problem in a flexible and unobtrusive manner is to have a
|
||||
* simple mechanism for adding and removing processing components, in which each
|
||||
* component completes a specific filtering action. This is the Intercepting Filter
|
||||
* pattern in action.
|
||||
* The key to solving this problem in a flexible and unobtrusive manner is to have a simple
|
||||
* mechanism for adding and removing processing components, in which each component completes a
|
||||
* specific filtering action. This is the Intercepting Filter pattern in action.
|
||||
* <p>
|
||||
* In this example we check whether the order request is valid through pre-processing
|
||||
* done via {@link Filter}. Each field has its own corresponding {@link Filter}
|
||||
* In this example we check whether the order request is valid through pre-processing done via
|
||||
* {@link Filter}. Each field has its own corresponding {@link Filter}
|
||||
* <p>
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class App{
|
||||
|
||||
/**
|
||||
* Program entry point
|
||||
* @param args command line args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
FilterManager filterManager = new FilterManager(new Target());
|
||||
filterManager.addFilter(new NameFilter());
|
||||
filterManager.addFilter(new ContactFilter());
|
||||
filterManager.addFilter(new AddressFilter());
|
||||
filterManager.addFilter(new DepositFilter());
|
||||
filterManager.addFilter(new OrderFilter());
|
||||
public class App {
|
||||
|
||||
Client client = new Client();
|
||||
client.setFilterManager(filterManager);
|
||||
}
|
||||
/**
|
||||
* Program entry point
|
||||
*
|
||||
* @param args command line args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
FilterManager filterManager = new FilterManager(new Target());
|
||||
filterManager.addFilter(new NameFilter());
|
||||
filterManager.addFilter(new ContactFilter());
|
||||
filterManager.addFilter(new AddressFilter());
|
||||
filterManager.addFilter(new DepositFilter());
|
||||
filterManager.addFilter(new OrderFilter());
|
||||
|
||||
Client client = new Client();
|
||||
client.setFilterManager(filterManager);
|
||||
}
|
||||
}
|
||||
|
@ -15,93 +15,95 @@ import javax.swing.JTextField;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
/**
|
||||
* The Client class is responsible for handling the input and running them through filters inside the {@link FilterManager}.
|
||||
* The Client class is responsible for handling the input and running them through filters inside
|
||||
* the {@link FilterManager}.
|
||||
*
|
||||
* This is where {@link Filter}s come to play as the client pre-processes the request before being displayed in the {@link Target}.
|
||||
* This is where {@link Filter}s come to play as the client pre-processes the request before being
|
||||
* displayed in the {@link Target}.
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class Client extends JFrame {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private FilterManager filterManager;
|
||||
private JLabel jl;
|
||||
private JTextField[] jtFields;
|
||||
private JTextArea[] jtAreas;
|
||||
private JButton clearButton, processButton;
|
||||
private FilterManager filterManager;
|
||||
private JLabel jl;
|
||||
private JTextField[] jtFields;
|
||||
private JTextArea[] jtAreas;
|
||||
private JButton clearButton, processButton;
|
||||
|
||||
public Client() {
|
||||
super("Client System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(300, 300);
|
||||
jl = new JLabel("RUNNING...");
|
||||
jtFields = new JTextField[3];
|
||||
for (int i = 0; i < 3; i++) {
|
||||
jtFields[i] = new JTextField();
|
||||
}
|
||||
jtAreas = new JTextArea[2];
|
||||
for (int i = 0; i < 2; i++) {
|
||||
jtAreas[i] = new JTextArea();
|
||||
}
|
||||
clearButton = new JButton("Clear");
|
||||
processButton = new JButton("Process");
|
||||
public Client() {
|
||||
super("Client System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(300, 300);
|
||||
jl = new JLabel("RUNNING...");
|
||||
jtFields = new JTextField[3];
|
||||
for (int i = 0; i < 3; i++) {
|
||||
jtFields[i] = new JTextField();
|
||||
}
|
||||
jtAreas = new JTextArea[2];
|
||||
for (int i = 0; i < 2; i++) {
|
||||
jtAreas[i] = new JTextArea();
|
||||
}
|
||||
clearButton = new JButton("Clear");
|
||||
processButton = new JButton("Process");
|
||||
|
||||
setup();
|
||||
}
|
||||
setup();
|
||||
}
|
||||
|
||||
private void setup() {
|
||||
setLayout(new BorderLayout());
|
||||
JPanel panel = new JPanel();
|
||||
add(jl, BorderLayout.SOUTH);
|
||||
add(panel, BorderLayout.CENTER);
|
||||
panel.setLayout(new GridLayout(6, 2));
|
||||
panel.add(new JLabel("Name"));
|
||||
panel.add(jtFields[0]);
|
||||
panel.add(new JLabel("Contact Number"));
|
||||
panel.add(jtFields[1]);
|
||||
panel.add(new JLabel("Address"));
|
||||
panel.add(jtAreas[0]);
|
||||
panel.add(new JLabel("Deposit Number"));
|
||||
panel.add(jtFields[2]);
|
||||
panel.add(new JLabel("Order"));
|
||||
panel.add(jtAreas[1]);
|
||||
panel.add(clearButton);
|
||||
panel.add(processButton);
|
||||
private void setup() {
|
||||
setLayout(new BorderLayout());
|
||||
JPanel panel = new JPanel();
|
||||
add(jl, BorderLayout.SOUTH);
|
||||
add(panel, BorderLayout.CENTER);
|
||||
panel.setLayout(new GridLayout(6, 2));
|
||||
panel.add(new JLabel("Name"));
|
||||
panel.add(jtFields[0]);
|
||||
panel.add(new JLabel("Contact Number"));
|
||||
panel.add(jtFields[1]);
|
||||
panel.add(new JLabel("Address"));
|
||||
panel.add(jtAreas[0]);
|
||||
panel.add(new JLabel("Deposit Number"));
|
||||
panel.add(jtFields[2]);
|
||||
panel.add(new JLabel("Order"));
|
||||
panel.add(jtAreas[1]);
|
||||
panel.add(clearButton);
|
||||
panel.add(processButton);
|
||||
|
||||
clearButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
for (JTextArea i : jtAreas) {
|
||||
i.setText("");
|
||||
}
|
||||
for (JTextField i : jtFields) {
|
||||
i.setText("");
|
||||
}
|
||||
}
|
||||
});
|
||||
clearButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
for (JTextArea i : jtAreas) {
|
||||
i.setText("");
|
||||
}
|
||||
for (JTextField i : jtFields) {
|
||||
i.setText("");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
processButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Order order = new Order(jtFields[0].getText(), jtFields[1]
|
||||
.getText(), jtAreas[0].getText(),
|
||||
jtFields[2].getText(), jtAreas[1].getText());
|
||||
jl.setText(sendRequest(order));
|
||||
}
|
||||
});
|
||||
processButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Order order =
|
||||
new Order(jtFields[0].getText(), jtFields[1].getText(), jtAreas[0].getText(),
|
||||
jtFields[2].getText(), jtAreas[1].getText());
|
||||
jl.setText(sendRequest(order));
|
||||
}
|
||||
});
|
||||
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(processButton);
|
||||
rootPane.setDefaultButton(processButton);
|
||||
setVisible(true);
|
||||
}
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(processButton);
|
||||
rootPane.setDefaultButton(processButton);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
public void setFilterManager(FilterManager filterManager) {
|
||||
this.filterManager = filterManager;
|
||||
}
|
||||
public void setFilterManager(FilterManager filterManager) {
|
||||
this.filterManager = filterManager;
|
||||
}
|
||||
|
||||
public String sendRequest(Order order) {
|
||||
return filterManager.filterRequest(order);
|
||||
}
|
||||
public String sendRequest(Order order) {
|
||||
return filterManager.filterRequest(order);
|
||||
}
|
||||
}
|
||||
|
@ -1,24 +1,24 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
* This filter checks for the contact field in which it checks if the input consist of numbers
|
||||
* and it also checks if the input follows the length constraint (11 digits)
|
||||
* Concrete implementation of filter This filter checks for the contact field in which it checks if
|
||||
* the input consist of numbers and it also checks if the input follows the length constraint (11
|
||||
* digits)
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class ContactFilter extends AbstractFilter {
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getContactNumber() == null
|
||||
|| order.getContactNumber().isEmpty()
|
||||
|| order.getContactNumber().matches(".*[^\\d]+.*")
|
||||
|| order.getContactNumber().length() != 11) {
|
||||
return result + "Invalid contact number! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getContactNumber() == null || order.getContactNumber().isEmpty()
|
||||
|| order.getContactNumber().matches(".*[^\\d]+.*")
|
||||
|| order.getContactNumber().length() != 11) {
|
||||
return result + "Invalid contact number! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,20 +1,20 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
* Concrete implementation of filter
|
||||
* This checks for the deposit code
|
||||
* Concrete implementation of filter This checks for the deposit code
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class DepositFilter extends AbstractFilter {
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getDepositNumber() == null || order.getDepositNumber().isEmpty()) {
|
||||
return result + "Invalid deposit number! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getDepositNumber() == null || order.getDepositNumber().isEmpty()) {
|
||||
return result + "Invalid deposit number! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,37 +1,40 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
* Filters perform certain tasks prior or after execution of
|
||||
* request by request handler. In this case, before the request is handled by
|
||||
* the target, the request undergoes through each Filter
|
||||
* Filters perform certain tasks prior or after execution of request by request handler. In this
|
||||
* case, before the request is handled by the target, the request undergoes through each Filter
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public interface Filter {
|
||||
|
||||
/**
|
||||
* Execute order processing filter.
|
||||
* @param order
|
||||
* @return empty string on success, otherwise error message.
|
||||
*/
|
||||
String execute(Order order);
|
||||
|
||||
/**
|
||||
* Set next filter in chain after this.
|
||||
* @param filter
|
||||
*/
|
||||
void setNext(Filter filter);
|
||||
|
||||
/**
|
||||
* Get next filter in chain after this.
|
||||
* @return
|
||||
*/
|
||||
Filter getNext();
|
||||
|
||||
/**
|
||||
* Get last filter in the chain.
|
||||
* @return
|
||||
*/
|
||||
Filter getLast();
|
||||
|
||||
/**
|
||||
* Execute order processing filter.
|
||||
*
|
||||
* @param order
|
||||
* @return empty string on success, otherwise error message.
|
||||
*/
|
||||
String execute(Order order);
|
||||
|
||||
/**
|
||||
* Set next filter in chain after this.
|
||||
*
|
||||
* @param filter
|
||||
*/
|
||||
void setNext(Filter filter);
|
||||
|
||||
/**
|
||||
* Get next filter in chain after this.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
Filter getNext();
|
||||
|
||||
/**
|
||||
* Get last filter in the chain.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
Filter getLast();
|
||||
}
|
||||
|
@ -1,34 +1,34 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
|
||||
/**
|
||||
* Filter Chain carries multiple filters and help to execute them in defined order on target.
|
||||
*
|
||||
* @author joshzambales
|
||||
*/
|
||||
public class FilterChain {
|
||||
|
||||
private Filter chain;
|
||||
|
||||
private final Target target;
|
||||
|
||||
public FilterChain(Target target) {
|
||||
this.target = target;
|
||||
}
|
||||
private Filter chain;
|
||||
|
||||
public void addFilter(Filter filter) {
|
||||
if (chain == null) {
|
||||
chain = filter;
|
||||
} else {
|
||||
chain.getLast().setNext(filter);
|
||||
}
|
||||
}
|
||||
private final Target target;
|
||||
|
||||
public String execute(Order order) {
|
||||
if (chain != null) {
|
||||
return chain.execute(order);
|
||||
} else {
|
||||
return "RUNNING...";
|
||||
}
|
||||
}
|
||||
public FilterChain(Target target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public void addFilter(Filter filter) {
|
||||
if (chain == null) {
|
||||
chain = filter;
|
||||
} else {
|
||||
chain.getLast().setNext(filter);
|
||||
}
|
||||
}
|
||||
|
||||
public String execute(Order order) {
|
||||
if (chain != null) {
|
||||
return chain.execute(order);
|
||||
} else {
|
||||
return "RUNNING...";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,18 +7,18 @@ package com.iluwatar.intercepting.filter;
|
||||
*
|
||||
*/
|
||||
public class FilterManager {
|
||||
|
||||
private FilterChain filterChain;
|
||||
|
||||
public FilterManager(Target target) {
|
||||
filterChain = new FilterChain(target);
|
||||
}
|
||||
private FilterChain filterChain;
|
||||
|
||||
public void addFilter(Filter filter) {
|
||||
filterChain.addFilter(filter);
|
||||
}
|
||||
public FilterManager(Target target) {
|
||||
filterChain = new FilterChain(target);
|
||||
}
|
||||
|
||||
public String filterRequest(Order order) {
|
||||
return filterChain.execute(order);
|
||||
}
|
||||
public void addFilter(Filter filter) {
|
||||
filterChain.addFilter(filter);
|
||||
}
|
||||
|
||||
public String filterRequest(Order order) {
|
||||
return filterChain.execute(order);
|
||||
}
|
||||
}
|
||||
|
@ -1,21 +1,22 @@
|
||||
package com.iluwatar.intercepting.filter;
|
||||
|
||||
/**
|
||||
* Concrete implementation of filter. This filter checks if the input in the Name
|
||||
* field is valid. (alphanumeric)
|
||||
* Concrete implementation of filter. This filter checks if the input in the Name field is valid.
|
||||
* (alphanumeric)
|
||||
*
|
||||
* @author joshzambales
|
||||
*
|
||||
*/
|
||||
public class NameFilter extends AbstractFilter {
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getName() == null || order.getName().isEmpty() || order.getName().matches(".*[^\\w|\\s]+.*")) {
|
||||
return result + "Invalid order! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getName() == null || order.getName().isEmpty()
|
||||
|| order.getName().matches(".*[^\\w|\\s]+.*")) {
|
||||
return result + "Invalid order! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,60 +6,59 @@ package com.iluwatar.intercepting.filter;
|
||||
*/
|
||||
public class Order {
|
||||
|
||||
private String name;
|
||||
private String contactNumber;
|
||||
private String address;
|
||||
private String depositNumber;
|
||||
private String order;
|
||||
|
||||
public Order() {
|
||||
}
|
||||
private String name;
|
||||
private String contactNumber;
|
||||
private String address;
|
||||
private String depositNumber;
|
||||
private String order;
|
||||
|
||||
public Order(String name, String contactNumber, String address, String depositNumber, String order) {
|
||||
this.name = name;
|
||||
this.contactNumber = contactNumber;
|
||||
this.address = address;
|
||||
this.depositNumber = depositNumber;
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
public Order() {}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
public Order(String name, String contactNumber, String address, String depositNumber, String order) {
|
||||
this.name = name;
|
||||
this.contactNumber = contactNumber;
|
||||
this.address = address;
|
||||
this.depositNumber = depositNumber;
|
||||
this.order = order;
|
||||
}
|
||||
|
||||
public String getContactNumber() {
|
||||
return contactNumber;
|
||||
}
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setContactNumber(String contactNumber) {
|
||||
this.contactNumber = contactNumber;
|
||||
}
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
public String getContactNumber() {
|
||||
return contactNumber;
|
||||
}
|
||||
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
public void setContactNumber(String contactNumber) {
|
||||
this.contactNumber = contactNumber;
|
||||
}
|
||||
|
||||
public String getDepositNumber() {
|
||||
return depositNumber;
|
||||
}
|
||||
public String getAddress() {
|
||||
return address;
|
||||
}
|
||||
|
||||
public void setDepositNumber(String depositNumber) {
|
||||
this.depositNumber = depositNumber;
|
||||
}
|
||||
public void setAddress(String address) {
|
||||
this.address = address;
|
||||
}
|
||||
|
||||
public String getOrder() {
|
||||
return order;
|
||||
}
|
||||
public String getDepositNumber() {
|
||||
return depositNumber;
|
||||
}
|
||||
|
||||
public void setOrder(String order) {
|
||||
this.order = order;
|
||||
}
|
||||
public void setDepositNumber(String depositNumber) {
|
||||
this.depositNumber = depositNumber;
|
||||
}
|
||||
|
||||
public String getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public void setOrder(String order) {
|
||||
this.order = order;
|
||||
}
|
||||
}
|
||||
|
@ -7,14 +7,14 @@ package com.iluwatar.intercepting.filter;
|
||||
*
|
||||
*/
|
||||
public class OrderFilter extends AbstractFilter {
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getOrder() == null || order.getOrder().isEmpty()) {
|
||||
return result + "Invalid order! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String execute(Order order) {
|
||||
String result = super.execute(order);
|
||||
if (order.getOrder() == null || order.getOrder().isEmpty()) {
|
||||
return result + "Invalid order! ";
|
||||
} else {
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -22,57 +22,57 @@ import javax.swing.table.DefaultTableModel;
|
||||
*/
|
||||
public class Target extends JFrame {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private JTable jt;
|
||||
private JScrollPane jsp;
|
||||
private DefaultTableModel dtm;
|
||||
private JButton del;
|
||||
private JTable jt;
|
||||
private JScrollPane jsp;
|
||||
private DefaultTableModel dtm;
|
||||
private JButton del;
|
||||
|
||||
public Target() {
|
||||
super("Order System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(640, 480);
|
||||
dtm = new DefaultTableModel(new Object[] { "Name", "Contact Number",
|
||||
"Address", "Deposit Number", "Order" }, 0);
|
||||
jt = new JTable(dtm);
|
||||
del = new JButton("Delete");
|
||||
setup();
|
||||
}
|
||||
public Target() {
|
||||
super("Order System");
|
||||
setDefaultCloseOperation(EXIT_ON_CLOSE);
|
||||
setSize(640, 480);
|
||||
dtm =
|
||||
new DefaultTableModel(new Object[] {"Name", "Contact Number", "Address", "Deposit Number",
|
||||
"Order"}, 0);
|
||||
jt = new JTable(dtm);
|
||||
del = new JButton("Delete");
|
||||
setup();
|
||||
}
|
||||
|
||||
private void setup() {
|
||||
setLayout(new BorderLayout());
|
||||
JPanel bot = new JPanel();
|
||||
add(jt.getTableHeader(), BorderLayout.NORTH);
|
||||
bot.setLayout(new BorderLayout());
|
||||
bot.add(del, BorderLayout.EAST);
|
||||
add(bot, BorderLayout.SOUTH);
|
||||
jsp = new JScrollPane(jt);
|
||||
jsp.setPreferredSize(new Dimension(500, 250));
|
||||
add(jsp, BorderLayout.CENTER);
|
||||
private void setup() {
|
||||
setLayout(new BorderLayout());
|
||||
JPanel bot = new JPanel();
|
||||
add(jt.getTableHeader(), BorderLayout.NORTH);
|
||||
bot.setLayout(new BorderLayout());
|
||||
bot.add(del, BorderLayout.EAST);
|
||||
add(bot, BorderLayout.SOUTH);
|
||||
jsp = new JScrollPane(jt);
|
||||
jsp.setPreferredSize(new Dimension(500, 250));
|
||||
add(jsp, BorderLayout.CENTER);
|
||||
|
||||
del.addActionListener(new DListener());
|
||||
del.addActionListener(new DListener());
|
||||
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(del);
|
||||
rootPane.setDefaultButton(del);
|
||||
setVisible(true);
|
||||
}
|
||||
JRootPane rootPane = SwingUtilities.getRootPane(del);
|
||||
rootPane.setDefaultButton(del);
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
public void execute(String[] request) {
|
||||
dtm.addRow(new Object[] { request[0], request[1], request[2],
|
||||
request[3], request[4] });
|
||||
}
|
||||
public void execute(String[] request) {
|
||||
dtm.addRow(new Object[] {request[0], request[1], request[2], request[3], request[4]});
|
||||
}
|
||||
|
||||
class DListener implements ActionListener {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
int temp = jt.getSelectedRow();
|
||||
if (temp == -1)
|
||||
return;
|
||||
int temp2 = jt.getSelectedRowCount();
|
||||
for (int i = 0; i < temp2; i++) {
|
||||
dtm.removeRow(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
class DListener implements ActionListener {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
int temp = jt.getSelectedRow();
|
||||
if (temp == -1)
|
||||
return;
|
||||
int temp2 = jt.getSelectedRowCount();
|
||||
for (int i = 0; i < temp2; i++) {
|
||||
dtm.removeRow(temp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,9 @@ import com.iluwatar.intercepting.filter.App;
|
||||
*/
|
||||
public class AppTest {
|
||||
|
||||
@Test
|
||||
public void test() {
|
||||
String[] args = {};
|
||||
App.main(args);
|
||||
}
|
||||
@Test
|
||||
public void test() {
|
||||
String[] args = {};
|
||||
App.main(args);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user