Agenda Dodavatelé - adresář
							parent
							
								
									5a9b8fd679
								
							
						
					
					
						commit
						3f411eadd2
					
				@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.dao;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface AddressDao extends BaseDao<Address> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.dao.jpa;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.dao.AddressDao;
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressDaoJPA extends BaseDaoJPA<Address> implements AddressDao {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public String getEntityName() {
 | 
				
			||||||
 | 
							return Address.class.getSimpleName();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,135 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.persistence.Column;
 | 
				
			||||||
 | 
					import javax.persistence.Entity;
 | 
				
			||||||
 | 
					import javax.persistence.Table;
 | 
				
			||||||
 | 
					import javax.validation.constraints.NotNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.hibernate.validator.constraints.Email;
 | 
				
			||||||
 | 
					import org.hibernate.validator.constraints.NotEmpty;
 | 
				
			||||||
 | 
					import org.hibernate.validator.constraints.URL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Entity
 | 
				
			||||||
 | 
					@Table(name="ADDRESS")
 | 
				
			||||||
 | 
					public class Address extends BaseData {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Column(name="COMPANY")
 | 
				
			||||||
 | 
						private String company;
 | 
				
			||||||
 | 
						@Column(name="DEPARTMENT")
 | 
				
			||||||
 | 
						private String department;
 | 
				
			||||||
 | 
						@Column(name="CONTACT_NAME")
 | 
				
			||||||
 | 
						private String contactName;
 | 
				
			||||||
 | 
						@Column(name="STREET")
 | 
				
			||||||
 | 
						private String street;
 | 
				
			||||||
 | 
						@Column(name="HOUSE_NUMBER")
 | 
				
			||||||
 | 
						private String houseNumber;
 | 
				
			||||||
 | 
						@Column(name="ZIP_CODE")
 | 
				
			||||||
 | 
						private String zipCode;
 | 
				
			||||||
 | 
						@Column(name="CITY")
 | 
				
			||||||
 | 
						private String city;
 | 
				
			||||||
 | 
						@Column(name="STATE")
 | 
				
			||||||
 | 
						private String state;
 | 
				
			||||||
 | 
						@Column(name="IC")
 | 
				
			||||||
 | 
						private long ic;
 | 
				
			||||||
 | 
						@Column(name="DIC")
 | 
				
			||||||
 | 
						private String dic;
 | 
				
			||||||
 | 
						@Column(name="PHONE")
 | 
				
			||||||
 | 
						private String phone;
 | 
				
			||||||
 | 
						@Column(name="EMAIL")
 | 
				
			||||||
 | 
						private String email;
 | 
				
			||||||
 | 
						@Column(name="WEB")
 | 
				
			||||||
 | 
						private String web;
 | 
				
			||||||
 | 
						@Column(name="DESCRIPTION")
 | 
				
			||||||
 | 
						private String description;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@NotNull(message = "Zadejte firmu")
 | 
				
			||||||
 | 
						@NotEmpty(message = "Zadejte firmu")
 | 
				
			||||||
 | 
						public String getCompany() {
 | 
				
			||||||
 | 
							return company;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setCompany(String company) {
 | 
				
			||||||
 | 
							this.company = company;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getDepartment() {
 | 
				
			||||||
 | 
							return department;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setDepartment(String department) {
 | 
				
			||||||
 | 
							this.department = department;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getContactName() {
 | 
				
			||||||
 | 
							return contactName;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setContactName(String contactName) {
 | 
				
			||||||
 | 
							this.contactName = contactName;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getStreet() {
 | 
				
			||||||
 | 
							return street;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setStreet(String street) {
 | 
				
			||||||
 | 
							this.street = street;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getHouseNumber() {
 | 
				
			||||||
 | 
							return houseNumber;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setHouseNumber(String houseNumber) {
 | 
				
			||||||
 | 
							this.houseNumber = houseNumber;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getZipCode() {
 | 
				
			||||||
 | 
							return zipCode;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setZipCode(String zipCode) {
 | 
				
			||||||
 | 
							this.zipCode = zipCode;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						@NotNull(message = "Zadejte město")
 | 
				
			||||||
 | 
						@NotEmpty(message = "Zadejte město")
 | 
				
			||||||
 | 
						public String getCity() {
 | 
				
			||||||
 | 
							return city;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setCity(String city) {
 | 
				
			||||||
 | 
							this.city = city;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getState() {
 | 
				
			||||||
 | 
							return state;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setState(String state) {
 | 
				
			||||||
 | 
							this.state = state;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public long getIc() {
 | 
				
			||||||
 | 
							return ic;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setIc(long ic) {
 | 
				
			||||||
 | 
							this.ic = ic;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getDic() {
 | 
				
			||||||
 | 
							return dic;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setDic(String dic) {
 | 
				
			||||||
 | 
							this.dic = dic;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getPhone() {
 | 
				
			||||||
 | 
							return phone;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setPhone(String phone) {
 | 
				
			||||||
 | 
							this.phone = phone;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						@Email(message = "Špatný formát adresy")
 | 
				
			||||||
 | 
						public String getEmail() {
 | 
				
			||||||
 | 
							return email;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setEmail(String email) {
 | 
				
			||||||
 | 
							this.email = email;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						@URL(message = "Špatný formát adresy")
 | 
				
			||||||
 | 
						public String getWeb() {
 | 
				
			||||||
 | 
							return web;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setWeb(String web) {
 | 
				
			||||||
 | 
							this.web = web;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getDescription() {
 | 
				
			||||||
 | 
							return description;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setDescription(String description) {
 | 
				
			||||||
 | 
							this.description = description;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.filters;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static info.bukova.isspst.StringUtils.not0ToStr;
 | 
				
			||||||
 | 
					import static info.bukova.isspst.StringUtils.nullStr;
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.hamcrest.Description;
 | 
				
			||||||
 | 
					import org.hamcrest.Factory;
 | 
				
			||||||
 | 
					import org.hamcrest.Matcher;
 | 
				
			||||||
 | 
					import org.hamcrest.TypeSafeMatcher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressFilter implements Filter<Address> {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private Address condAddr;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public AddressFilter(Address condAddr) {
 | 
				
			||||||
 | 
							this.condAddr = condAddr;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static class AddrMatcher extends TypeSafeMatcher<Address> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							private Address condAddress;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							public AddrMatcher(Address cond) {
 | 
				
			||||||
 | 
								this.condAddress = cond;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public void describeTo(Description desc) {
 | 
				
			||||||
 | 
								desc.appendText("address matches");
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							@Override
 | 
				
			||||||
 | 
							public boolean matchesSafely(Address item) {
 | 
				
			||||||
 | 
								return nullStr(item.getCompany()).toLowerCase().contains(nullStr(condAddress.getCompany()).toLowerCase()) 
 | 
				
			||||||
 | 
										&& nullStr(item.getCity()).toLowerCase().contains(nullStr(condAddress.getCity()).toLowerCase())
 | 
				
			||||||
 | 
										&& nullStr(item.getContactName()).toLowerCase().contains(nullStr(condAddress.getContactName()).toLowerCase())
 | 
				
			||||||
 | 
										&& nullStr(item.getStreet()).toLowerCase().contains(nullStr(condAddress.getStreet()).toLowerCase())
 | 
				
			||||||
 | 
										&& not0ToStr(item.getIc()).startsWith(not0ToStr(condAddress.getIc()))
 | 
				
			||||||
 | 
										&& nullStr(item.getHouseNumber()).startsWith(nullStr(condAddress.getHouseNumber()));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							@Factory
 | 
				
			||||||
 | 
							public static Matcher<Address> matchAddr(Address addr) {
 | 
				
			||||||
 | 
								return new AddrMatcher(addr);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public AddrMatcher matcher() {
 | 
				
			||||||
 | 
							return new AddrMatcher(condAddr);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public String queryString() {
 | 
				
			||||||
 | 
							// TODO query string
 | 
				
			||||||
 | 
							return "";
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class IsspstException extends RuntimeException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						 private final static String MSG = "RsFaktura Exception. ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						 public IsspstException() {
 | 
				
			||||||
 | 
					             super(MSG);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     public IsspstException(String message) {
 | 
				
			||||||
 | 
					             super(MSG + message);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     public IsspstException(Throwable cause) {
 | 
				
			||||||
 | 
					             super(cause);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     public IsspstException(String message, Throwable cause) {
 | 
				
			||||||
 | 
					             super(MSG + message, cause);
 | 
				
			||||||
 | 
					     }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface AdbService extends Service<Address>{
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public List<Address> lookForAddr(AddressFinder finder, Address condAdr);
 | 
				
			||||||
 | 
						public void fillFoundData(AddressFinder finder, Address address);
 | 
				
			||||||
 | 
						public void mergeAddress(Address destination, Address source, boolean overwrite);
 | 
				
			||||||
 | 
						public List<Address> queryToArrayList(String filter);
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public int count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.AbstractOwnedService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.transaction.annotation.Transactional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AdbServiceImpl extends AbstractOwnedService<Address> implements AdbService {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public List<Address> lookForAddr(AddressFinder finder, Address condAddr) {
 | 
				
			||||||
 | 
							return finder.findAddress(condAddr);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void mergeAddress(Address destination, Address source, boolean overwrite) {
 | 
				
			||||||
 | 
							if (destination.getIc() == 0)
 | 
				
			||||||
 | 
								destination.setIc(source.getIc());
 | 
				
			||||||
 | 
							if (destination.getCompany() == null || destination.getCompany().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setCompany(source.getCompany());
 | 
				
			||||||
 | 
							if (destination.getDic() == null || destination.getDic().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setDic(source.getDic());
 | 
				
			||||||
 | 
							if (destination.getDepartment() == null || destination.getDepartment().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setDepartment(source.getDepartment());
 | 
				
			||||||
 | 
							if (destination.getContactName() == null || destination.getContactName().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setContactName(source.getContactName());
 | 
				
			||||||
 | 
							if (destination.getStreet() == null || destination.getStreet().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setStreet(source.getStreet());
 | 
				
			||||||
 | 
							if (destination.getHouseNumber() == null || destination.getHouseNumber().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setHouseNumber(source.getHouseNumber());
 | 
				
			||||||
 | 
							if (destination.getCity() == null || destination.getCity().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setCity(source.getCity());
 | 
				
			||||||
 | 
							if (destination.getZipCode() == null || destination.getZipCode().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setZipCode(source.getZipCode());
 | 
				
			||||||
 | 
							if (destination.getPhone() == null || destination.getPhone().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setPhone(source.getPhone());
 | 
				
			||||||
 | 
							if (destination.getEmail() == null || destination.getEmail().isEmpty() || overwrite)
 | 
				
			||||||
 | 
								destination.setEmail(source.getEmail());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void fillFoundData(AddressFinder finder, Address address) {
 | 
				
			||||||
 | 
							List<Address> found = finder.findAddress(address);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (found.size() > 0) {
 | 
				
			||||||
 | 
								this.mergeAddress(address, found.get(0), false);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public List<Address> queryToArrayList(String filter) {
 | 
				
			||||||
 | 
							return new ArrayList<Address>(execQuery(filter));
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						@Transactional
 | 
				
			||||||
 | 
						public int count() {
 | 
				
			||||||
 | 
					//		Query q = queryDefaultFilter();
 | 
				
			||||||
 | 
					//		q.setResult("count(id)");
 | 
				
			||||||
 | 
					//		Object result = q.execute();
 | 
				
			||||||
 | 
					//				
 | 
				
			||||||
 | 
					//		return ((Long)result).intValue();
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface AddressFinder {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public List<Address> findAddress(Address condAddress);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,178 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.IsspstException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.io.StringReader;
 | 
				
			||||||
 | 
					import java.io.StringWriter;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.xml.transform.Transformer;
 | 
				
			||||||
 | 
					import javax.xml.transform.TransformerException;
 | 
				
			||||||
 | 
					import javax.xml.transform.TransformerFactory;
 | 
				
			||||||
 | 
					import javax.xml.transform.stream.StreamResult;
 | 
				
			||||||
 | 
					import javax.xml.transform.stream.StreamSource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.HttpClient;
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.HttpException;
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.NameValuePair;
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.methods.GetMethod;
 | 
				
			||||||
 | 
					import org.exolab.castor.xml.MarshalException;
 | 
				
			||||||
 | 
					import org.exolab.castor.xml.Unmarshaller;
 | 
				
			||||||
 | 
					import org.exolab.castor.xml.ValidationException;
 | 
				
			||||||
 | 
					import org.springframework.core.io.ClassPathResource;
 | 
				
			||||||
 | 
					import org.springframework.core.io.Resource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressFinderAres implements AddressFinder {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private Map<String, String> conditions;
 | 
				
			||||||
 | 
						private String aresUrl;
 | 
				
			||||||
 | 
						private Unmarshaller unmarsheller;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private NameValuePair[] buildQueryString() {
 | 
				
			||||||
 | 
							List<NameValuePair> resList = new ArrayList<NameValuePair>();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							for (String key : conditions.keySet()) {
 | 
				
			||||||
 | 
								resList.add(new NameValuePair(key, conditions.get(key)));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return resList.toArray(new NameValuePair[resList.size()]);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private InputStream getAresResponse() throws HttpException, IOException, IsspstException {
 | 
				
			||||||
 | 
							GetMethod httpGet = new GetMethod(aresUrl);
 | 
				
			||||||
 | 
							HttpClient httpCli = new HttpClient();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							httpGet.setQueryString(buildQueryString());
 | 
				
			||||||
 | 
							int res = httpCli.executeMethod(httpGet);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (res != 200) {
 | 
				
			||||||
 | 
								throw new IsspstException("Server returned error code " + String.valueOf(res));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return httpGet.getResponseBodyAsStream();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private StringReader transformOut(InputStream inXml) throws IsspstException {
 | 
				
			||||||
 | 
							TransformerFactory tf = TransformerFactory.newInstance();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							Resource resource = new ClassPathResource("info/bukova/isspst/services/addressbook/ares.xsl");
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							Transformer transformer;
 | 
				
			||||||
 | 
							StringWriter sWriter = null;
 | 
				
			||||||
 | 
							InputStream is = null;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								sWriter = new StringWriter();
 | 
				
			||||||
 | 
								is = resource.getInputStream();
 | 
				
			||||||
 | 
								StreamSource src = new StreamSource(is);
 | 
				
			||||||
 | 
								transformer = tf.newTransformer(src);
 | 
				
			||||||
 | 
								is.close();
 | 
				
			||||||
 | 
										
 | 
				
			||||||
 | 
								StreamSource source = new StreamSource(inXml);
 | 
				
			||||||
 | 
								StreamResult result = new StreamResult(sWriter);
 | 
				
			||||||
 | 
								transformer.transform(source, result);
 | 
				
			||||||
 | 
								sWriter.flush();
 | 
				
			||||||
 | 
								sWriter.close();
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								return new StringReader(sWriter.getBuffer().toString());
 | 
				
			||||||
 | 
							} catch (TransformerException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES transformation error", e.getCause());
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("Transformation file \"ares.xsl\" not found.", e.getCause());
 | 
				
			||||||
 | 
							} finally {
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									if (sWriter != null) {
 | 
				
			||||||
 | 
										sWriter.flush();
 | 
				
			||||||
 | 
										sWriter.close();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} catch (IOException e) {
 | 
				
			||||||
 | 
									throw new IsspstException("Cannot close stream", e.getCause());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									if (is != null) {
 | 
				
			||||||
 | 
										is.close();
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								} catch (IOException e) {
 | 
				
			||||||
 | 
									throw new IsspstException("Cannot close stream", e.getCause());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private List<Address> convertToAddrList(AresOdpoved odpoved) {
 | 
				
			||||||
 | 
							List<Address> resList = new ArrayList<Address>();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (odpoved == null || odpoved.getPocetZaznamu() <= 0)
 | 
				
			||||||
 | 
								return resList;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							for (AresZaznam zaznam : odpoved.getAresZaznam()) {
 | 
				
			||||||
 | 
								Address addr = new Address();
 | 
				
			||||||
 | 
								addr.setCompany(zaznam.getFirma());
 | 
				
			||||||
 | 
								addr.setIc(zaznam.getIco());
 | 
				
			||||||
 | 
								addr.setStreet(zaznam.getUlice());
 | 
				
			||||||
 | 
								addr.setHouseNumber(zaznam.getCp());
 | 
				
			||||||
 | 
								addr.setCity(zaznam.getObec());
 | 
				
			||||||
 | 
								addr.setZipCode(zaznam.getPsc());
 | 
				
			||||||
 | 
								resList.add(addr);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return resList;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private void setConditionAddr(Address condAddress) {
 | 
				
			||||||
 | 
							if (conditions == null)
 | 
				
			||||||
 | 
								conditions = new HashMap<String, String>();
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								conditions.clear();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (condAddress.getCompany() != null && !condAddress.getCompany().isEmpty())
 | 
				
			||||||
 | 
								conditions.put("obchodni_firma", condAddress.getCompany());
 | 
				
			||||||
 | 
							if (condAddress.getIc() != 0)
 | 
				
			||||||
 | 
								conditions.put("ico", String.valueOf(condAddress.getIc()));
 | 
				
			||||||
 | 
							if (condAddress.getCity() != null && !condAddress.getCity().isEmpty())
 | 
				
			||||||
 | 
								conditions.put("nazev_obce", condAddress.getCity());
 | 
				
			||||||
 | 
							conditions.put("max_pocet", "200");
 | 
				
			||||||
 | 
							conditions.put("czk", "utf");
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public synchronized List<Address> findAddress(Address condAddress) throws IsspstException {
 | 
				
			||||||
 | 
							setConditionAddr(condAddress);
 | 
				
			||||||
 | 
							AresOdpoved odpoved;
 | 
				
			||||||
 | 
							InputStream is = null;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								is = getAresResponse();
 | 
				
			||||||
 | 
								odpoved = (AresOdpoved) unmarsheller.unmarshal(transformOut(is));
 | 
				
			||||||
 | 
								is.close();
 | 
				
			||||||
 | 
								return convertToAddrList(odpoved);
 | 
				
			||||||
 | 
							} catch (MarshalException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("Can't create ARES answer object", e.getCause());
 | 
				
			||||||
 | 
							} catch (ValidationException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES answer is not valid", e.getCause());
 | 
				
			||||||
 | 
							} catch (HttpException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("Error while comunication with ARES server", e.getCause());
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES find error", e.getCause());
 | 
				
			||||||
 | 
							} finally {
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									if (is != null)
 | 
				
			||||||
 | 
										is.close();
 | 
				
			||||||
 | 
								} catch (IOException e) {
 | 
				
			||||||
 | 
									throw new IsspstException("Cannot close stream", e.getCause());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setAresUrl(String aresUrl) {
 | 
				
			||||||
 | 
							this.aresUrl = aresUrl;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setUnmarsheller(Unmarshaller unmarsheller) {
 | 
				
			||||||
 | 
							this.unmarsheller = unmarsheller;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.IsspstException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.xml.parsers.DocumentBuilder;
 | 
				
			||||||
 | 
					import javax.xml.parsers.DocumentBuilderFactory;
 | 
				
			||||||
 | 
					import javax.xml.parsers.ParserConfigurationException;
 | 
				
			||||||
 | 
					import javax.xml.xpath.XPath;
 | 
				
			||||||
 | 
					import javax.xml.xpath.XPathConstants;
 | 
				
			||||||
 | 
					import javax.xml.xpath.XPathExpression;
 | 
				
			||||||
 | 
					import javax.xml.xpath.XPathExpressionException;
 | 
				
			||||||
 | 
					import javax.xml.xpath.XPathFactory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.HttpClient;
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.HttpException;
 | 
				
			||||||
 | 
					import org.apache.commons.httpclient.methods.GetMethod;
 | 
				
			||||||
 | 
					import org.springframework.util.xml.SimpleNamespaceContext;
 | 
				
			||||||
 | 
					import org.w3c.dom.Document;
 | 
				
			||||||
 | 
					import org.xml.sax.SAXException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressFinderTaxID implements AddressFinder {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private String aresDicUrl;
 | 
				
			||||||
 | 
						private Address resAddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public synchronized List<Address> findAddress(Address condAddress) throws IsspstException {
 | 
				
			||||||
 | 
							ArrayList<Address> resList = new ArrayList<Address>();
 | 
				
			||||||
 | 
							resAddr = new Address();
 | 
				
			||||||
 | 
							resAddr.setIc(condAddress.getIc());
 | 
				
			||||||
 | 
							InputStream is = null;
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								is	= getAresResponse(condAddress);
 | 
				
			||||||
 | 
								parseDic(is);
 | 
				
			||||||
 | 
								is.close();
 | 
				
			||||||
 | 
							} catch (HttpException e) {
 | 
				
			||||||
 | 
								throw new IsspstException();
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								throw new IsspstException();
 | 
				
			||||||
 | 
							} finally {
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									is.close();
 | 
				
			||||||
 | 
								} catch (IOException e) {
 | 
				
			||||||
 | 
									throw new IsspstException("Cannot close stream", e.getCause());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							resList.add(resAddr);
 | 
				
			||||||
 | 
							return resList;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private InputStream getAresResponse(Address condAddress) throws IsspstException, HttpException, IOException {
 | 
				
			||||||
 | 
							GetMethod httpGet = new GetMethod(aresDicUrl);
 | 
				
			||||||
 | 
							HttpClient httpCli = new HttpClient();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							httpGet.setQueryString("ico=" + String.valueOf(condAddress.getIc()));
 | 
				
			||||||
 | 
							int res = httpCli.executeMethod(httpGet);
 | 
				
			||||||
 | 
									
 | 
				
			||||||
 | 
							if (res != 200) {
 | 
				
			||||||
 | 
								throw new IsspstException("Server returned error code " + String.valueOf(res));
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							return httpGet.getResponseBodyAsStream();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private void parseDic(InputStream is) throws IsspstException {
 | 
				
			||||||
 | 
							DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 | 
				
			||||||
 | 
							dbf.setNamespaceAware(true);
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								DocumentBuilder docBuilder = dbf.newDocumentBuilder();
 | 
				
			||||||
 | 
								Document doc = docBuilder.parse(is);
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								Map<String, String> xmlNs = new HashMap<String, String>();
 | 
				
			||||||
 | 
								xmlNs.put("are", "http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer_basic/v_1.0.3");
 | 
				
			||||||
 | 
								xmlNs.put("D", "http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_datatypes/v_1.0.3");
 | 
				
			||||||
 | 
								xmlNs.put("U", "http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/uvis_datatypes/v_1.0.3");
 | 
				
			||||||
 | 
								SimpleNamespaceContext nsCtx = new SimpleNamespaceContext();
 | 
				
			||||||
 | 
								nsCtx.setBindings(xmlNs);
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
								XPathFactory factory = XPathFactory.newInstance();
 | 
				
			||||||
 | 
								XPath xpath = factory.newXPath();
 | 
				
			||||||
 | 
								xpath.setNamespaceContext(nsCtx);
 | 
				
			||||||
 | 
								XPathExpression exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:DIC");
 | 
				
			||||||
 | 
								String dic = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:OF");
 | 
				
			||||||
 | 
								String company = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:AA/D:NU");
 | 
				
			||||||
 | 
								String street = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:AA/D:CD");
 | 
				
			||||||
 | 
								String num = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:AA/D:CO");
 | 
				
			||||||
 | 
								String numOr = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:AA/D:N");
 | 
				
			||||||
 | 
								String city = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:AA/D:PSC");
 | 
				
			||||||
 | 
								String zip = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
								exp = xpath.compile("/are:Ares_odpovedi/are:Odpoved/D:VBAS/D:AA/D:NS");
 | 
				
			||||||
 | 
								String state = (String) exp.evaluate(doc, XPathConstants.STRING);
 | 
				
			||||||
 | 
											
 | 
				
			||||||
 | 
								resAddr.setDic(dic);
 | 
				
			||||||
 | 
								resAddr.setCompany(company);
 | 
				
			||||||
 | 
								resAddr.setStreet(street);
 | 
				
			||||||
 | 
								if (numOr != null && !numOr.isEmpty())
 | 
				
			||||||
 | 
									num = num + "/" + numOr;
 | 
				
			||||||
 | 
								resAddr.setHouseNumber(num);
 | 
				
			||||||
 | 
								resAddr.setCity(city);
 | 
				
			||||||
 | 
								resAddr.setZipCode(zip);
 | 
				
			||||||
 | 
								resAddr.setState(state);
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
							} catch (ParserConfigurationException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES: parese error while finding Tax ID", e.getCause());
 | 
				
			||||||
 | 
							} catch (SAXException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES: SAX error while finding Tax ID", e.getCause());
 | 
				
			||||||
 | 
							} catch (IOException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES: IO error while finding Tax ID", e.getCause());
 | 
				
			||||||
 | 
							} catch (XPathExpressionException e) {
 | 
				
			||||||
 | 
								throw new IsspstException("ARES: xpath compile error", e.getCause());
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getAresDicUrl() {
 | 
				
			||||||
 | 
							return aresDicUrl;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setAresDicUrl(String aresDicUrl) {
 | 
				
			||||||
 | 
							this.aresDicUrl = aresDicUrl;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AresOdpoved {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private long pocetZaznamu;
 | 
				
			||||||
 | 
						private String typVyhledani;
 | 
				
			||||||
 | 
						private List<AresZaznam> aresZaznam;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public long getPocetZaznamu() {
 | 
				
			||||||
 | 
							return pocetZaznamu;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setPocetZaznamu(long pocetZaznamu) {
 | 
				
			||||||
 | 
							this.pocetZaznamu = pocetZaznamu;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getTypVyhledani() {
 | 
				
			||||||
 | 
							return typVyhledani;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setTypVyhledani(String typVyhledani) {
 | 
				
			||||||
 | 
							this.typVyhledani = typVyhledani;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public List<AresZaznam> getAresZaznam() {
 | 
				
			||||||
 | 
							return aresZaznam;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setAresZaznam(List<AresZaznam> aresZaznam) {
 | 
				
			||||||
 | 
							this.aresZaznam = aresZaznam;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.services.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AresZaznam {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private String firma;
 | 
				
			||||||
 | 
						private long ico;
 | 
				
			||||||
 | 
						private String obec;
 | 
				
			||||||
 | 
						private String mestskaCast;
 | 
				
			||||||
 | 
						private String ulice;
 | 
				
			||||||
 | 
						private String cp;
 | 
				
			||||||
 | 
						private String psc;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getFirma() {
 | 
				
			||||||
 | 
							return firma;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setFirma(String firma) {
 | 
				
			||||||
 | 
							this.firma = firma;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public long getIco() {
 | 
				
			||||||
 | 
							return ico;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setIco(long ico) {
 | 
				
			||||||
 | 
							this.ico = ico;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getObec() {
 | 
				
			||||||
 | 
							return obec;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setObec(String obec) {
 | 
				
			||||||
 | 
							this.obec = obec;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getMestskaCast() {
 | 
				
			||||||
 | 
							return mestskaCast;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setMestskaCast(String mestskaCast) {
 | 
				
			||||||
 | 
							this.mestskaCast = mestskaCast;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getUlice() {
 | 
				
			||||||
 | 
							return ulice;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setUlice(String ulice) {
 | 
				
			||||||
 | 
							this.ulice = ulice;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getCp() {
 | 
				
			||||||
 | 
							return cp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setCp(String cp) {
 | 
				
			||||||
 | 
							this.cp = cp;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public String getPsc() {
 | 
				
			||||||
 | 
							return psc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						public void setPsc(String psc) {
 | 
				
			||||||
 | 
							this.psc = psc;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
 | 
				
			||||||
 | 
						xmlns:are="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_answer/v_1.0.1" 
 | 
				
			||||||
 | 
						xmlns:dtt="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_datatypes/v_1.0.4" 
 | 
				
			||||||
 | 
						xmlns:udt="http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/uvis_datatypes/v_1.0.1" >
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<xsl:template match="are:Odpoved">
 | 
				
			||||||
 | 
					<AresOdpoved>
 | 
				
			||||||
 | 
						<PocetZaznamu><xsl:value-of select="are:Pocet_zaznamu" /></PocetZaznamu>
 | 
				
			||||||
 | 
						<TypVyhledani><xsl:value-of select="are:Typ_vyhledani" /></TypVyhledani>
 | 
				
			||||||
 | 
						<xsl:for-each select="are:Zaznam">
 | 
				
			||||||
 | 
						<AresZaznam>
 | 
				
			||||||
 | 
							<Firma><xsl:value-of select="are:Obchodni_firma" /></Firma>
 | 
				
			||||||
 | 
							<Ico><xsl:value-of select="are:ICO" /></Ico>
 | 
				
			||||||
 | 
							<Obec><xsl:value-of select="are:Identifikace/are:Adresa_ARES/dtt:Nazev_obce" /></Obec>
 | 
				
			||||||
 | 
							<MestskaCast><xsl:value-of select="are:Identifikace/are:Adresa_ARES/dtt:Nazev_mestske_casti" /></MestskaCast>
 | 
				
			||||||
 | 
							<Ulice><xsl:value-of select="are:Identifikace/are:Adresa_ARES/dtt:Nazev_ulice" /></Ulice>
 | 
				
			||||||
 | 
							<Cp><xsl:value-of select="are:Identifikace/are:Adresa_ARES/dtt:Cislo_domovni" /><xsl:if test="are:Identifikace/are:Adresa_ARES/dtt:Cislo_orientacni">/<xsl:value-of select="are:Identifikace/are:Adresa_ARES/dtt:Cislo_orientacni" />
 | 
				
			||||||
 | 
								</xsl:if>
 | 
				
			||||||
 | 
							</Cp>
 | 
				
			||||||
 | 
							<Psc><xsl:value-of select="are:Identifikace/are:Adresa_ARES/dtt:PSC" /></Psc>
 | 
				
			||||||
 | 
						</AresZaznam>
 | 
				
			||||||
 | 
						</xsl:for-each>
 | 
				
			||||||
 | 
					</AresOdpoved>
 | 
				
			||||||
 | 
						</xsl:template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</xsl:stylesheet>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0"?>
 | 
				
			||||||
 | 
					<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
 | 
				
			||||||
 | 
					                         "http://castor.codehaus.org/mapping.dtd">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<mapping>
 | 
				
			||||||
 | 
						<class name="info.bukova.isspst.services.addressbook.AresOdpoved">
 | 
				
			||||||
 | 
							<map-to xml="AresOdpoved"/>
 | 
				
			||||||
 | 
							<field name="PocetZaznamu" type="long">
 | 
				
			||||||
 | 
								<bind-xml name="PocetZaznamu" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="TypVyhledani" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="TypVyhledani" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="AresZaznam" type="info.bukova.isspst.services.addressbook.AresZaznam" collection="arraylist">
 | 
				
			||||||
 | 
								<bind-xml name="AresZaznam" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
						</class>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<class name="info.bukova.isspst.services.addressbook.AresZaznam">
 | 
				
			||||||
 | 
							<field name="Firma" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="Firma" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="Ico" type="long">
 | 
				
			||||||
 | 
								<bind-xml name="Ico" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="Ulice" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="Ulice" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="Cp" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="Cp" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="Obec" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="Obec" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="MestskaCast" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="MestskaCast" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
							<field name="Psc" type="string">
 | 
				
			||||||
 | 
								<bind-xml name="Psc" node="element"/>
 | 
				
			||||||
 | 
							</field>
 | 
				
			||||||
 | 
						</class>
 | 
				
			||||||
 | 
					</mapping>
 | 
				
			||||||
@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.ui;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.zkoss.zk.ui.HtmlBasedComponent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class Mapa extends HtmlBasedComponent {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 6856577544897548586L;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private String address = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getAddress() {
 | 
				
			||||||
 | 
							return address;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public void setAddress(String address) {
 | 
				
			||||||
 | 
							if (this.address != null && this.address.equals(address))
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							this.address = address;
 | 
				
			||||||
 | 
							this.smartUpdate("address", this.address);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public void setValue(String val) {
 | 
				
			||||||
 | 
							setAddress(val);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public String getValue() {
 | 
				
			||||||
 | 
							return address;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						protected void renderProperties(org.zkoss.zk.ui.sys.ContentRenderer renderer)
 | 
				
			||||||
 | 
					            throws java.io.IOException {
 | 
				
			||||||
 | 
							super.renderProperties(renderer);
 | 
				
			||||||
 | 
							render(renderer, "address", this.address);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.ui.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.ExecutionArgParam;
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.Init;
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.NotifyChange;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressFindResult {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						private List<Address> listResult;
 | 
				
			||||||
 | 
						private Address selectedAddr;
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Init
 | 
				
			||||||
 | 
						public void init(@ExecutionArgParam("result") List<Address> result) {
 | 
				
			||||||
 | 
							listResult = result;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public List<Address> getListResult() {
 | 
				
			||||||
 | 
							return listResult;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Address getSelectedAddr() {
 | 
				
			||||||
 | 
							return selectedAddr;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@NotifyChange("selected")
 | 
				
			||||||
 | 
						public void setSelectedAddr(Address selectedAddr) {
 | 
				
			||||||
 | 
							this.selectedAddr = selectedAddr;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						public boolean getSelected() {
 | 
				
			||||||
 | 
							return selectedAddr == null;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,77 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.ui.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.IsspstException;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.addressbook.AdbService;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.addressbook.AddressFinder;
 | 
				
			||||||
 | 
					import info.bukova.isspst.ui.FormViewModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.BindingParam;
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.Command;
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.GlobalCommand;
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.Init;
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.NotifyChange;
 | 
				
			||||||
 | 
					import org.zkoss.zk.ui.Executions;
 | 
				
			||||||
 | 
					import org.zkoss.zk.ui.select.annotation.WireVariable;
 | 
				
			||||||
 | 
					import org.zkoss.zul.Messagebox;
 | 
				
			||||||
 | 
					import org.zkoss.zul.Window;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressForm extends FormViewModel<Address> {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@WireVariable
 | 
				
			||||||
 | 
						private AdbService adbService;
 | 
				
			||||||
 | 
						@WireVariable
 | 
				
			||||||
 | 
						private AddressFinder addressFinderAres;
 | 
				
			||||||
 | 
						@WireVariable
 | 
				
			||||||
 | 
						private AddressFinder addressFinderTaxID;
 | 
				
			||||||
 | 
								
 | 
				
			||||||
 | 
						@Init(superclass = true)
 | 
				
			||||||
 | 
						public void init() {
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Command
 | 
				
			||||||
 | 
						@NotifyChange("dataBean")
 | 
				
			||||||
 | 
						public void searchAres() {
 | 
				
			||||||
 | 
							if (getDataBean().getIc() != 0) {
 | 
				
			||||||
 | 
								try {
 | 
				
			||||||
 | 
									adbService.fillFoundData(addressFinderTaxID, getDataBean());
 | 
				
			||||||
 | 
								} catch (IsspstException e) {
 | 
				
			||||||
 | 
									e.printStackTrace();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							Map<String, List<Address>> arg = new HashMap<String, List<Address>>();
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								arg.put("result", adbService.lookForAddr(addressFinderAres, getDataBean()));
 | 
				
			||||||
 | 
							} catch (IsspstException e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
								Messagebox.show("Chyba při hledání adresy", "Chyba", Messagebox.OK, Messagebox.ERROR);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							Window resWin = (Window) Executions.createComponents("addrFindResult.zul", null, arg);
 | 
				
			||||||
 | 
							resWin.doModal();
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@GlobalCommand("selectAddress")
 | 
				
			||||||
 | 
						@NotifyChange("dataBean")
 | 
				
			||||||
 | 
						public void selectAddress(@BindingParam("selected") Address selected, @BindingParam("window") Window window) {
 | 
				
			||||||
 | 
							try {
 | 
				
			||||||
 | 
								adbService.fillFoundData(addressFinderTaxID, selected);
 | 
				
			||||||
 | 
							} catch (IsspstException e) {
 | 
				
			||||||
 | 
								e.printStackTrace();
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							adbService.mergeAddress(getDataBean(), selected, true);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
							if (window != null)
 | 
				
			||||||
 | 
								window.detach();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					package info.bukova.isspst.ui.addressbook;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import info.bukova.isspst.data.Address;
 | 
				
			||||||
 | 
					import info.bukova.isspst.filters.AddressFilter;
 | 
				
			||||||
 | 
					import info.bukova.isspst.services.addressbook.AdbService;
 | 
				
			||||||
 | 
					import info.bukova.isspst.ui.ListViewModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.zkoss.bind.annotation.Init;
 | 
				
			||||||
 | 
					import org.zkoss.zk.ui.select.annotation.WireVariable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class AddressList extends ListViewModel<Address> {
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@WireVariable
 | 
				
			||||||
 | 
						private AdbService adbService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Init
 | 
				
			||||||
 | 
						public void init() {
 | 
				
			||||||
 | 
							service = adbService;
 | 
				
			||||||
 | 
							dataClass = Address.class;
 | 
				
			||||||
 | 
							formZul = "address.zul";
 | 
				
			||||||
 | 
							dataFilter = new AddressFilter(getFilterTemplate());
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					info.bukova.isspst.ui.Mapa = zk.$extends(zk.Widget, {
 | 
				
			||||||
 | 
					    address : '', // default value
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    getAddress : function() {
 | 
				
			||||||
 | 
					        return this.address;
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    setAddress : function(value) {
 | 
				
			||||||
 | 
					        if (this.address != value) {
 | 
				
			||||||
 | 
					            this.address = value;
 | 
				
			||||||
 | 
					            if (this.desktop) {
 | 
				
			||||||
 | 
					            	var myOptions = {
 | 
				
			||||||
 | 
					            		      zoom: 12,
 | 
				
			||||||
 | 
					            		      center: new google.maps.LatLng(-34.397, 150.644),
 | 
				
			||||||
 | 
					            		      mapTypeId: google.maps.MapTypeId.ROADMAP
 | 
				
			||||||
 | 
					            		    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            		    var map = new google.maps.Map(this.$n(), myOptions);
 | 
				
			||||||
 | 
					            		    var geocoder = new google.maps.Geocoder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            		    var request = {
 | 
				
			||||||
 | 
					            		      address: this.address
 | 
				
			||||||
 | 
					            		    };
 | 
				
			||||||
 | 
					            		    geocoder.geocode(request, function(results, status) {
 | 
				
			||||||
 | 
					            		      if (status == google.maps.GeocoderStatus.OK) {
 | 
				
			||||||
 | 
					            		        var marker = new google.maps.Marker({
 | 
				
			||||||
 | 
					            		          map: map,
 | 
				
			||||||
 | 
					            		          position: results[0].geometry.location
 | 
				
			||||||
 | 
					            		        });
 | 
				
			||||||
 | 
					            		        map.panTo(marker.getPosition());
 | 
				
			||||||
 | 
					            		      } else {
 | 
				
			||||||
 | 
					            		        window.console.log('failed to geocode address: '  + status);
 | 
				
			||||||
 | 
					            		      }
 | 
				
			||||||
 | 
					            		    });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    redraw: function (out) {
 | 
				
			||||||
 | 
					    	 out.push('<div', this.domAttrs_(), '><div id="map_canvas">', this.getAddress(), '</div></span>');
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<package name="info.bukova.isspst.ui" language="xul/html" depends="zul">
 | 
				
			||||||
 | 
					    <widget name="Mapa"/>
 | 
				
			||||||
 | 
					</package>
 | 
				
			||||||
@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<language-addon>
 | 
				
			||||||
 | 
					    <!-- The name of this addon. It must be unique -->
 | 
				
			||||||
 | 
					    <addon-name>ckezbind</addon-name>
 | 
				
			||||||
 | 
					    <!-- Specifies what other addon this depends
 | 
				
			||||||
 | 
					    <depends></depends>
 | 
				
			||||||
 | 
					    -->
 | 
				
			||||||
 | 
					    <!-- Which language this addon will be added to -->
 | 
				
			||||||
 | 
					    <language-name>xul/html</language-name>
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    <component>
 | 
				
			||||||
 | 
					        <component-name>ckeditor</component-name>
 | 
				
			||||||
 | 
					        <extends>ckeditor</extends>
 | 
				
			||||||
 | 
					        <annotation>
 | 
				
			||||||
 | 
					            <annotation-name>ZKBIND</annotation-name>
 | 
				
			||||||
 | 
					            <property-name>value</property-name>
 | 
				
			||||||
 | 
					            <attribute>
 | 
				
			||||||
 | 
					                <attribute-name>ACCESS</attribute-name>
 | 
				
			||||||
 | 
					                <attribute-value>both</attribute-value>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					            <attribute>
 | 
				
			||||||
 | 
					                <attribute-name>SAVE_EVENT</attribute-name>
 | 
				
			||||||
 | 
					                <attribute-value>onChange</attribute-value>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					            <attribute>
 | 
				
			||||||
 | 
					                <attribute-name>LOAD_REPLACEMENT</attribute-name>
 | 
				
			||||||
 | 
					                <attribute-value>value</attribute-value>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					            <attribute>
 | 
				
			||||||
 | 
					                <attribute-name>LOAD_TYPE</attribute-name>
 | 
				
			||||||
 | 
					                <attribute-value>java.lang.String</attribute-value>
 | 
				
			||||||
 | 
					            </attribute>
 | 
				
			||||||
 | 
					        </annotation>
 | 
				
			||||||
 | 
					    </component>
 | 
				
			||||||
 | 
					</language-addon>
 | 
				
			||||||
@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<language-addon>
 | 
				
			||||||
 | 
					    <addon-name>mapa</addon-name>
 | 
				
			||||||
 | 
					    <language-name>xul/html</language-name>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    <component>
 | 
				
			||||||
 | 
					        <component-name>mapa</component-name>
 | 
				
			||||||
 | 
					        <component-class>info.bukova.isspst.ui.Mapa</component-class>
 | 
				
			||||||
 | 
					        <widget-class>info.bukova.isspst.ui.Mapa</widget-class>
 | 
				
			||||||
 | 
					    </component>
 | 
				
			||||||
 | 
					</language-addon>
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<zk>
 | 
				
			||||||
 | 
						<!-- [Optional]
 | 
				
			||||||
 | 
						Uncomment if you want to defines the application's name 
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<preference>
 | 
				
			||||||
 | 
							<name>org.zkoss.zk.ui.WebApp.name</name>
 | 
				
			||||||
 | 
							<value>rsfaktura</value>
 | 
				
			||||||
 | 
						</preference>
 | 
				
			||||||
 | 
						-->
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<client-config>
 | 
				
			||||||
 | 
					        <debug-js>true</debug-js>
 | 
				
			||||||
 | 
					    </client-config>
 | 
				
			||||||
 | 
					    <library-property>
 | 
				
			||||||
 | 
					        <name>org.zkoss.web.classWebResource.cache</name>
 | 
				
			||||||
 | 
					        <value>false</value>
 | 
				
			||||||
 | 
					    </library-property>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<language-config>
 | 
				
			||||||
 | 
					        <addon-uri>/WEB-INF/mapa-lang-addon.xml</addon-uri> 
 | 
				
			||||||
 | 
					        <addon-uri>/WEB-INF/ckez-bind-lang-addon.xml</addon-uri>
 | 
				
			||||||
 | 
					    </language-config>
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    <!-- <library-property>
 | 
				
			||||||
 | 
					    	<name>org.zkoss.zul.progressbox.position</name>
 | 
				
			||||||
 | 
					    	<value>center</value>
 | 
				
			||||||
 | 
						</library-property> -->
 | 
				
			||||||
 | 
					</zk>
 | 
				
			||||||
@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					<?page title="${labels.FindResult}" contentType="text/html;charset=UTF-8"?>
 | 
				
			||||||
 | 
					<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
 | 
				
			||||||
 | 
					<zk>
 | 
				
			||||||
 | 
					<window id="findResult" title="Výsledek hledání" border="normal" apply="org.zkoss.bind.BindComposer"
 | 
				
			||||||
 | 
						viewModel="@id('vm') @init('info.bukova.isspst.ui.addressbook.AddressFindResult')"
 | 
				
			||||||
 | 
						closable="true" width="700px">
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<style src="/app/form.css"/>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<listbox model="@load(vm.listResult)" height="300px" selectedItem="@bind(vm.selectedAddr)">
 | 
				
			||||||
 | 
							<listhead>
 | 
				
			||||||
 | 
								<listheader label="Firma" sort="auto(company)"/>
 | 
				
			||||||
 | 
								<listheader label="IČ"/>
 | 
				
			||||||
 | 
								<listheader label="Ulice"/>
 | 
				
			||||||
 | 
								<listheader label="Číslo domu" width="80px"/>
 | 
				
			||||||
 | 
								<listheader label="Město"/>
 | 
				
			||||||
 | 
							</listhead>
 | 
				
			||||||
 | 
							<template name="model">
 | 
				
			||||||
 | 
								<listitem>
 | 
				
			||||||
 | 
									<listcell label="@load(each.company)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.ic)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.street)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.houseNumber)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.city)"/>
 | 
				
			||||||
 | 
								</listitem>
 | 
				
			||||||
 | 
							</template>
 | 
				
			||||||
 | 
						</listbox>
 | 
				
			||||||
 | 
						<button label="Zvolit" onClick="@global-command('selectAddress', selected=vm.selectedAddr, window=findResult)" disabled="@bind(vm.selected)" sclass="nicebutton"/> <button label="Zavřít" onClick="findResult.detach()" sclass="nicebutton"/>
 | 
				
			||||||
 | 
					</window>
 | 
				
			||||||
 | 
					</zk>
 | 
				
			||||||
@ -0,0 +1,78 @@
 | 
				
			|||||||
 | 
					<?page title="Adresa" contentType="text/html;charset=UTF-8"?>
 | 
				
			||||||
 | 
					<zk>
 | 
				
			||||||
 | 
					<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
 | 
				
			||||||
 | 
					<window id="editWin" title="Adresa" border="normal"  apply="org.zkoss.bind.BindComposer"
 | 
				
			||||||
 | 
						viewModel="@id('vm') @init('info.bukova.isspst.ui.addressbook.AddressForm')"
 | 
				
			||||||
 | 
						closable="true" width="600px">
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						<style src="/app/form.css"/>
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						<grid width="580px">
 | 
				
			||||||
 | 
							<columns>
 | 
				
			||||||
 | 
								<column label="" hflex="min"/>
 | 
				
			||||||
 | 
								<column label="" hflex="min"/>
 | 
				
			||||||
 | 
								<column label=""/>
 | 
				
			||||||
 | 
								<column label=""/>
 | 
				
			||||||
 | 
							</columns>
 | 
				
			||||||
 | 
							<rows>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Firma" /> <textbox value="@bind(vm.dataBean.company)" instant="true"/>
 | 
				
			||||||
 | 
									<label visible="true" value="@load(vm.errMessages['company'])" style="color:red"/>
 | 
				
			||||||
 | 
									<button image="/img/search.png" label="Hledat v ARESu" onClick="@command('searchAres')" sclass="nicebutton" disabled="@load((vm.dataBean.ic == 0) && (empty vm.dataBean.company))" />				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="IČ" /> <textbox value="@bind(vm.dataBean.ic)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="DIČ" /> <textbox value="@bind(vm.dataBean.dic)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Oddělení" /> <textbox value="@bind(vm.dataBean.department)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Kontaktní osoba" /> <textbox value="@bind(vm.dataBean.contactName)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Ulice" /> <textbox value="@bind(vm.dataBean.street)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Číslo domu" /> <textbox value="@bind(vm.dataBean.houseNumber)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Město" /> <textbox value="@bind(vm.dataBean.city)"/>
 | 
				
			||||||
 | 
									<label visible="true" value="@load(vm.errMessages['city'])" style="color:red"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="PSČ" /> <textbox value="@bind(vm.dataBean.zipCode)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Telefon" /> <textbox value="@bind(vm.dataBean.phone)"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="E-mail" /> <textbox value="@bind(vm.dataBean.email)"/>
 | 
				
			||||||
 | 
									<label visible="true" value="@load(vm.errMessages['email'])" style="color:red"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
								<row>
 | 
				
			||||||
 | 
									<label value="Web" /> <textbox value="@bind(vm.dataBean.web)"/>
 | 
				
			||||||
 | 
									<label visible="true" value="@load(vm.errMessages['web'])" style="color:red"/>				
 | 
				
			||||||
 | 
								</row>
 | 
				
			||||||
 | 
							</rows>
 | 
				
			||||||
 | 
						</grid>
 | 
				
			||||||
 | 
						<hlayout>
 | 
				
			||||||
 | 
							<panel>
 | 
				
			||||||
 | 
								<panelchildren>
 | 
				
			||||||
 | 
								<vlayout>
 | 
				
			||||||
 | 
							<panel>
 | 
				
			||||||
 | 
								<panelchildren><label value="Poznámka"/> </panelchildren>
 | 
				
			||||||
 | 
							</panel>
 | 
				
			||||||
 | 
							<panel>
 | 
				
			||||||
 | 
								<panelchildren><ckeditor height="65px" width="330px" toolbar="Basic" value="@bind(vm.dataBean.description)"/>
 | 
				
			||||||
 | 
								</panelchildren>
 | 
				
			||||||
 | 
							</panel>
 | 
				
			||||||
 | 
						</vlayout>	
 | 
				
			||||||
 | 
						</panelchildren>
 | 
				
			||||||
 | 
							</panel>
 | 
				
			||||||
 | 
						</hlayout>
 | 
				
			||||||
 | 
						<include src="/app/formButtons.zul"/>
 | 
				
			||||||
 | 
					</window>
 | 
				
			||||||
 | 
					</zk>
 | 
				
			||||||
@ -0,0 +1,89 @@
 | 
				
			|||||||
 | 
					<?page title="Dodavatelé" contentType="text/html;charset=UTF-8"?>
 | 
				
			||||||
 | 
					<zk>
 | 
				
			||||||
 | 
					<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
 | 
				
			||||||
 | 
					<window title="Dodavatelé" border="normal"
 | 
				
			||||||
 | 
						apply="org.zkoss.bind.BindComposer" height="570px"
 | 
				
			||||||
 | 
						viewModel="@id('vm') @init('info.bukova.isspst.ui.addressbook.AddressList')">
 | 
				
			||||||
 | 
							
 | 
				
			||||||
 | 
						<include src="/app/toolbar.zul"/>
 | 
				
			||||||
 | 
						<style src="/app/form.css"/>              
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					    <hbox width="100%">
 | 
				
			||||||
 | 
					     <listbox id="dataGrid" model="@load(vm.dataList)" selectedItem="@bind(vm.dataBean)" 
 | 
				
			||||||
 | 
							onAfterRender="@command('afterRender')" selectedIndex="@load(vm.selIndex)" hflex="6" height="480px">
 | 
				
			||||||
 | 
							<auxhead sclass="category-center" visible="@load(vm.filter)">
 | 
				
			||||||
 | 
					            <auxheader>
 | 
				
			||||||
 | 
					                <image src="/img/funnel.png" />
 | 
				
			||||||
 | 
					                <textbox instant="true" width="85%" 
 | 
				
			||||||
 | 
					                    value="@bind(vm.filterTemplate.company)" onChange="@command('doFilter')" />
 | 
				
			||||||
 | 
					            </auxheader>
 | 
				
			||||||
 | 
					            <auxheader>
 | 
				
			||||||
 | 
					                <image src="/img/funnel.png" />
 | 
				
			||||||
 | 
					                <textbox instant="true" width="85%" 
 | 
				
			||||||
 | 
					                    value="@bind(vm.filterTemplate.ic)" onChange="@command('doFilter')" />
 | 
				
			||||||
 | 
					            </auxheader>
 | 
				
			||||||
 | 
					            <auxheader>
 | 
				
			||||||
 | 
					            	<image src="/img/funnel.png" />
 | 
				
			||||||
 | 
					                <textbox instant="true"  width="85%"
 | 
				
			||||||
 | 
					                    value="@bind(vm.filterTemplate.contactName)" onChange="@command('doFilter')"/>
 | 
				
			||||||
 | 
					            </auxheader>
 | 
				
			||||||
 | 
					            <auxheader>
 | 
				
			||||||
 | 
					            	<image src="/img/funnel.png" />
 | 
				
			||||||
 | 
					                <textbox instant="true" width="85%"
 | 
				
			||||||
 | 
					                    value="@bind(vm.filterTemplate.street)" onChange="@command('doFilter')"/>
 | 
				
			||||||
 | 
					            </auxheader>
 | 
				
			||||||
 | 
					            <auxheader>
 | 
				
			||||||
 | 
					            	<image src="/img/funnel.png" />
 | 
				
			||||||
 | 
					                <textbox instant="true" width="85%"
 | 
				
			||||||
 | 
					                    value="@bind(vm.filterTemplate.houseNumber)" onChange="@command('doFilter')"/>
 | 
				
			||||||
 | 
					            </auxheader>
 | 
				
			||||||
 | 
					            <auxheader>
 | 
				
			||||||
 | 
					            	<image src="/img/funnel.png" />
 | 
				
			||||||
 | 
					                <textbox instant="true" width="85%"
 | 
				
			||||||
 | 
					                    value="@bind(vm.filterTemplate.city)" onChange="@command('doFilter')"/>
 | 
				
			||||||
 | 
					            </auxheader>
 | 
				
			||||||
 | 
					        </auxhead>
 | 
				
			||||||
 | 
							<listhead vflex="true">
 | 
				
			||||||
 | 
								<listheader label="Firma" sort="auto(company)" onSort="@command('onSort', column='company')" />
 | 
				
			||||||
 | 
								<listheader label="IČ" width="100px"/>
 | 
				
			||||||
 | 
								<listheader label="Kontaktní osoba"/>
 | 
				
			||||||
 | 
								<listheader label="Ulice"/>
 | 
				
			||||||
 | 
								<listheader label="Číslo domu" width="80px"/>
 | 
				
			||||||
 | 
								<listheader label="Město" sort="auto(city)" onSort="@command('onSort', column='city')"/>
 | 
				
			||||||
 | 
							</listhead>
 | 
				
			||||||
 | 
							<template name="model">
 | 
				
			||||||
 | 
								<listitem>
 | 
				
			||||||
 | 
									<listcell label="@load(each.company)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.ic)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.contactName)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.street)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.houseNumber)"/>
 | 
				
			||||||
 | 
									<listcell label="@load(each.city)"/>
 | 
				
			||||||
 | 
								</listitem>
 | 
				
			||||||
 | 
							</template>
 | 
				
			||||||
 | 
						</listbox>	
 | 
				
			||||||
 | 
					    	
 | 
				
			||||||
 | 
					    	<div hflex="4">
 | 
				
			||||||
 | 
					    		<label value="Detail:" sclass="bold"/>
 | 
				
			||||||
 | 
					    		<grid visible="@load(vm.dataBean ne null)" hflex="1">
 | 
				
			||||||
 | 
					    			<columns>
 | 
				
			||||||
 | 
					    				<column hflex="min"/>
 | 
				
			||||||
 | 
					    				<column/>
 | 
				
			||||||
 | 
					    			</columns>
 | 
				
			||||||
 | 
					    			<rows>
 | 
				
			||||||
 | 
					    				<row><label value="Oddělení"/><label value="@load(vm.dataBean.department)"/></row>
 | 
				
			||||||
 | 
					    				<row><label value="Telefon"/><label value="@load(vm.dataBean.phone)"/></row>
 | 
				
			||||||
 | 
					    				<row><label value="Email"/><label value="@load(vm.dataBean.email)"/></row>
 | 
				
			||||||
 | 
					    				<row><label value="Web"/><label value="@load(vm.dataBean.web)"/></row>
 | 
				
			||||||
 | 
					    			</rows>
 | 
				
			||||||
 | 
					    		</grid>
 | 
				
			||||||
 | 
					    		<label value="Poznámka:" visible="@load(not empty vm.dataBean.description)" sclass="bold"/>
 | 
				
			||||||
 | 
					    		<html style="font-family:arial,sans-serif;font-size:12px;" content="@load(vm.dataBean.description)"/>
 | 
				
			||||||
 | 
					    		<mapa address="@load((empty vm.dataBean.street ? vm.dataBean.city : vm.dataBean.street).concat(' ').concat(vm.dataBean.houseNumber).concat(', ').concat(vm.dataBean.city))" width="360px" height="180px" visible="@load(vm.dataBean ne null)"/>
 | 
				
			||||||
 | 
					    	</div>
 | 
				
			||||||
 | 
					    </hbox>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					</window>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</zk>
 | 
				
			||||||
@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					<?page title="Dodavatelé" contentType="text/html;charset=UTF-8"?>
 | 
				
			||||||
 | 
					<?script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB6sVWLvFMvbK994Pa418XDhbDUZ6Xr4CQ&sensor=false"?>
 | 
				
			||||||
 | 
					<zk>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<zscript>
 | 
				
			||||||
 | 
						String gridZul = "addressbook.zul";
 | 
				
			||||||
 | 
					</zscript>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<include src="/app/template.zhtml"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</zk>
 | 
				
			||||||
@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					<?page title="buttons" contentType="text/html;charset=UTF-8"?>
 | 
				
			||||||
 | 
					<zk>
 | 
				
			||||||
 | 
					<button image="/img/save.png" label="Uložit" onClick="@command('save', window=editWin) @global-command('refresh')" sclass="nicebutton" /><button image="~./zul/img/misc/drag-disallow.png" label="Zrušit" onClick="editWin.detach()" sclass="nicebutton"/>
 | 
				
			||||||
 | 
					</zk>
 | 
				
			||||||
											
												Binary file not shown.
											
										
									
								| 
		 After Width: | Height: | Size: 778 B  | 
					Loading…
					
					
				
		Reference in New Issue