use of de.janrufmonitor.util.uuid.UUID in project janrufmonitor by tbrandt77.
the class VcfParser30 method getImageFromBase64.
private String getImageFromBase64(String base64Image, String type) {
try {
ByteArrayInputStream encodedIn = new ByteArrayInputStream(base64Image.getBytes());
Base64Decoder b64 = new Base64Decoder(encodedIn);
ByteArrayOutputStream decodedOut = new ByteArrayOutputStream();
Stream.copy(b64, decodedOut);
b64.close();
decodedOut.close();
ByteArrayInputStream decodedIn = new ByteArrayInputStream(decodedOut.toByteArray());
return this.createImage(decodedIn, (new UUID().toString() + "." + type));
} catch (IOException e) {
this.m_logger.log(Level.SEVERE, e.getMessage(), e);
}
return null;
}
use of de.janrufmonitor.util.uuid.UUID in project janrufmonitor by tbrandt77.
the class OutlookMappingManager method mapToJamCaller.
public ICaller mapToJamCaller(Dispatch oCaller, IOutlookMapping om) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Applying mapping: " + om.toString());
}
IAttributeMap m = getRuntime().getCallerFactory().createAttributeMap();
// processing the numbers
List outlookNumberMappings = om.getSupportedNumbers();
List phones = new ArrayList(outlookNumberMappings.size());
String numbertype = null;
String number = null;
IPhonenumber phone = null;
for (int i = 0, j = outlookNumberMappings.size(); i < j; i++) {
numbertype = (String) outlookNumberMappings.get(i);
number = Dispatch.get(oCaller, numbertype).toString().trim();
if (number != null && !PhonenumberAnalyzer.getInstance(getRuntime()).isInternal(number) && !PhonenumberAnalyzer.getInstance(getRuntime()).isClired(number)) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("OutlookCallerManager raw number: " + number);
}
phone = PhonenumberAnalyzer.getInstance(getRuntime()).toIdentifiedPhonenumber(number);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("OutlookCallerManager identified number: " + phone);
}
if (phone.getTelephoneNumber().trim().length() > 0 && !phone.isClired()) {
m.add(getNumberTypeAttribute(numbertype, phone, om));
m.add(om.createOutlookNumberTypeAttribute(phone, numbertype));
phones.add(phone);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Added phone " + phone.toString());
}
}
} else if (number != null && (number.length() > 0 && PhonenumberAnalyzer.getInstance(getRuntime()).isInternal(number))) {
// found internal number
phone = getRuntime().getCallerFactory().createInternalPhonenumber(number);
if (phone.getTelephoneNumber().trim().length() > 0 && !phone.isClired()) {
m.add(getNumberTypeAttribute(numbertype, phone, om));
m.add(om.createOutlookNumberTypeAttribute(phone, numbertype));
phones.add(phone);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Added internal phone " + phone.toString());
}
}
}
}
if (phones.size() > 0) {
if (phones.size() > 1)
Collections.sort(phones, new PhonenumberTypeComparator(m, om));
// process address data
List outlookContacFieldMappings = om.getSupportedContactFields();
String field = null;
String jamField = null;
IAttribute a = null;
for (int i = 0, j = outlookContacFieldMappings.size(); i < j; i++) {
field = (String) outlookContacFieldMappings.get(i);
jamField = om.mapToJamField(field);
if (jamField != null) {
a = createAttribute(jamField, Dispatch.get(oCaller, field).toString().trim());
if (a != null) {
m.add(a);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Added attribute " + a.toString());
}
a = om.createOutlookContactFieldAttribute(field);
if (a != null)
m.add(a);
}
}
}
a = createAttribute(IJAMConst.ATTRIBUTE_NAME_CREATION, Long.toString(new OutlookDate(Dispatch.get(oCaller, "CreationTime").getDate()).getTime()));
if (a != null)
m.add(a);
a = createAttribute(IJAMConst.ATTRIBUTE_NAME_MODIFIED, Long.toString(new OutlookDate(Dispatch.get(oCaller, "LastModificationTime").getDate()).getTime()));
if (a != null)
m.add(a);
a = createAttribute("outlook.uuid", Dispatch.get(oCaller, OutlookContactConst.User1).toString());
if (a != null)
m.add(a);
String geodata = null;
if (om.getSupportedContactFields().contains(OutlookContactConst.User3)) {
geodata = Dispatch.get(oCaller, OutlookContactConst.User3).toString();
}
if (om.getSupportedContactFields().contains(OutlookContactConst.User4)) {
geodata = Dispatch.get(oCaller, OutlookContactConst.User4).toString();
}
if (geodata != null && geodata.trim().length() > 0) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Found geodata: " + geodata);
}
String[] values = geodata.split(",");
if (values.length == 3) {
a = createAttribute(IJAMConst.ATTRIBUTE_NAME_GEO_ACC, values[0]);
if (a != null)
m.add(a);
a = createAttribute(IJAMConst.ATTRIBUTE_NAME_GEO_LNG, values[1]);
if (a != null)
m.add(a);
a = createAttribute(IJAMConst.ATTRIBUTE_NAME_GEO_LAT, values[2]);
if (a != null)
m.add(a);
}
}
IAttributeMap additionalMap = om.getSpecialAttributes();
if (additionalMap != null) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Adding special attributes: " + additionalMap.toString());
}
m.addAll(additionalMap);
}
// TODO: 2008/08/13 - Hack - split up street and street no
IAttribute street = m.get(IJAMConst.ATTRIBUTE_NAME_STREET);
if (street != null && street.getValue().trim().length() > 0) {
String[] streetSplit = street.getValue().trim().split(" ");
if (streetSplit.length > 1) {
street.setValue("");
for (int i = 0; i < streetSplit.length - 1; i++) {
street.setValue(street.getValue() + " " + streetSplit[i]);
}
street.setValue(street.getValue().trim());
m.add(street);
IAttribute streetno = getRuntime().getCallerFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_STREET_NO, streetSplit[streetSplit.length - 1]);
m.add(streetno);
}
}
ICaller outlookCaller = getRuntime().getCallerFactory().createCaller(null, phones, m);
String uuid = Dispatch.get(oCaller, OutlookContactConst.User1).toString().trim();
if (uuid != null && uuid.length() > 0)
outlookCaller.setUUID(uuid);
else
// outlookCaller.setUUID(outlookCaller.getName().getLastname()+"_"+outlookCaller.getName().getFirstname()+"_"+outlookCaller.getPhoneNumber().getTelephoneNumber());
outlookCaller.setUUID(new UUID().toString());
this.setPictureAttribute(outlookCaller, oCaller);
IAttribute cm = getRuntime().getCallerFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CALLERMANAGER, ID);
outlookCaller.setAttribute(cm);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Created Outlook contact: " + outlookCaller.toString());
}
return outlookCaller;
}
return null;
}
use of de.janrufmonitor.util.uuid.UUID in project janrufmonitor by tbrandt77.
the class OutlookContactProxy method findContact.
public synchronized ICaller findContact(IPhonenumber pn) throws OutlookContactProxyException {
ICaller c = Identifier.identifyDefault(getRuntime(), pn);
if (c == null && PhonenumberAnalyzer.getInstance(getRuntime()).isInternal(pn.getTelephoneNumber())) {
pn = getRuntime().getCallerFactory().createInternalPhonenumber(pn.getTelephoneNumber());
c = getRuntime().getCallerFactory().createCaller(pn);
}
if (c != null) {
if (PhonenumberAnalyzer.getInstance(getRuntime()).isInternal(pn)) {
IPhonenumber p = getRuntime().getCallerFactory().createInternalPhonenumber(pn.getTelephoneNumber());
c.setPhoneNumber(p);
}
pn = c.getPhoneNumber();
try {
List uuids = this.m_dbh.select(pn.getIntAreaCode(), pn.getAreaCode(), pn.getCallNumber());
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("List of found UUIDs: " + uuids);
}
if (uuids.size() > 0) {
String uuid = null;
for (int k = 0; k < uuids.size(); k++) {
uuid = (String) uuids.get(k);
ActiveXComponent outlook = new ActiveXComponent("Outlook.Application");
Dispatch mapiNS = null;
Dispatch contactsFolder = null;
Dispatch contactsSubFolder = null;
Dispatch items = null;
Dispatch contact = null;
try {
if (this.m_logger.isLoggable(Level.INFO))
this.m_logger.info("created Outlook.Application dispatch");
if (this.m_logger.isLoggable(Level.INFO))
this.m_logger.info("Microsoft Outlook version: " + Dispatch.get(outlook.getObject(), "Version"));
mapiNS = outlook.getProperty("Session").toDispatch();
if (this.m_logger.isLoggable(Level.INFO))
this.m_logger.info("Microsoft Outlook namespace: " + mapiNS);
Variant contactsVariant = new Variant(10);
contactsFolder = Dispatch.call(mapiNS, "GetDefaultFolder", contactsVariant).toDispatch();
if (this.m_logger.isLoggable(Level.INFO))
this.m_logger.info("Microsoft Outlook folder: " + contactsFolder);
contactsVariant.safeRelease();
// getting configured subfolders
List subfolders = new ArrayList();
subfolders.add("");
subfolders.addAll(getAllContactFolders());
String folder = null;
for (int i = 0, j = subfolders.size(); i < j; i++) {
folder = (String) subfolders.get(i);
items = this.getItemsOfFolder(contactsFolder, folder, false);
if (items == null)
continue;
contact = this.findContactByUUID(items, uuid);
if (contact != null) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Outlook contact found for UUID: " + uuid);
}
ICallerList cl = getCallerListFromSingleContact(contact);
if (cl.size() == 1) {
ICaller rc = cl.get(0);
rc.setUUID(new UUID().toString());
if (rc instanceof IMultiPhoneCaller) {
((IMultiPhoneCaller) rc).getPhonenumbers().clear();
}
rc.setPhoneNumber(pn);
IAttribute att = getRuntime().getCallerFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CENTRAL_NUMBER_OF_EXTENSION, pn.getTelephoneNumber());
rc.setAttribute(att);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Exact caller match: " + rc.toString());
}
return rc;
}
if (cl.size() == 2) {
ICaller rc = null;
for (int x = 0; x < cl.size(); x++) {
rc = cl.get(x);
if (rc instanceof IMultiPhoneCaller) {
List phones = ((IMultiPhoneCaller) rc).getPhonenumbers();
IPhonenumber p = null;
for (int z = 0; z < phones.size(); z++) {
p = (IPhonenumber) phones.get(z);
if (p.getIntAreaCode().equalsIgnoreCase(pn.getIntAreaCode()) && p.getAreaCode().equalsIgnoreCase(pn.getAreaCode()) && pn.getCallNumber().startsWith(p.getCallNumber())) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Caller match (IMultiPhoneCaller): " + rc.toString());
}
rc.setUUID(new UUID().toString());
if (rc instanceof IMultiPhoneCaller) {
((IMultiPhoneCaller) rc).getPhonenumbers().clear();
}
rc.setPhoneNumber(p);
return rc;
}
}
} else {
if (rc.getPhoneNumber().getIntAreaCode().equalsIgnoreCase(pn.getIntAreaCode()) && rc.getPhoneNumber().getAreaCode().equalsIgnoreCase(pn.getAreaCode()) && pn.getCallNumber().startsWith(rc.getPhoneNumber().getCallNumber())) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Caller match (ICaller): " + rc.toString());
}
return rc;
}
}
}
}
}
}
} catch (ComFailException ex) {
this.m_logger.warning("1 item (e.g. distribution list) was ignored on loading.");
if (ex.toString().indexOf("Can't get object clsid from progid") > -1) {
this.m_logger.log(Level.SEVERE, ex.toString(), ex);
PropagationFactory.getInstance().fire(new Message(Message.ERROR, getNamespace(), "olstarterror", ex));
} else
this.m_logger.warning(ex.getMessage() + ", " + ex.getSource());
} catch (Exception ex) {
throw new OutlookContactProxyException("Error in Application Outlook.", ex);
} finally {
// added 2006/02/05: clean outlook references
if (contact != null)
contact.safeRelease();
if (items != null)
items.safeRelease();
if (contactsFolder != null)
contactsFolder.safeRelease();
if (contactsSubFolder != null)
contactsSubFolder.safeRelease();
if (mapiNS != null)
mapiNS.safeRelease();
if (outlook != null)
outlook.safeRelease();
}
}
} else {
Properties config = this.getRuntime().getConfigManagerFactory().getConfigManager().getProperties(NAMESPACE);
if (config.getProperty("keepextension", "false").equalsIgnoreCase("true")) {
// iterate down
String callnumber = pn.getCallNumber();
if (callnumber.length() > 1) {
pn.setCallNumber(callnumber.substring(0, callnumber.length() - 1));
ICaller ca = this.findContact(pn);
if (ca != null) {
pn.setCallNumber(callnumber);
if (ca instanceof IMultiPhoneCaller) {
((IMultiPhoneCaller) ca).getPhonenumbers().clear();
}
ca.setPhoneNumber(pn);
// set extension
if (ca.getAttributes().contains(IJAMConst.ATTRIBUTE_NAME_CENTRAL_NUMBER_OF_EXTENSION)) {
String centralnumber = ca.getAttribute(IJAMConst.ATTRIBUTE_NAME_CENTRAL_NUMBER_OF_EXTENSION).getValue();
if (pn.getTelephoneNumber().length() > centralnumber.length()) {
IAttribute att = getRuntime().getCallerFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_EXTENSION, pn.getTelephoneNumber().substring(centralnumber.length()));
ca.setAttribute(att);
}
}
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Caller match by central number: " + ca.toString());
}
return ca;
}
}
}
}
} catch (SQLException e) {
this.m_logger.log(Level.SEVERE, e.toString(), e);
}
}
this.m_logger.info("Caller not identified: " + pn.getTelephoneNumber());
return null;
}
use of de.janrufmonitor.util.uuid.UUID in project janrufmonitor by tbrandt77.
the class InfoDialog method createDialogArea.
protected Control createDialogArea(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(3, false));
GridData gd = new GridData(GridData.FILL_BOTH);
gd.horizontalIndent = 15;
gd.verticalIndent = 15;
composite.setLayoutData(gd);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 2;
FontData fd = parent.getFont().getFontData()[0];
fd.setStyle(SWT.BOLD);
fd.setHeight(11);
Font font = new Font(parent.getDisplay(), fd);
Label l = new Label(composite, SWT.NONE);
l.setText("jAnrufmonitor");
l.setFont(font);
l.setLayoutData(gd);
gd = new GridData(GridData.FILL_BOTH);
gd.verticalSpan = 8;
// check for edition
String edition = getI18nManager().getString(NAMESPACE, "edition", "label", getLanguage());
if (edition != null && edition.trim().length() > 0 && !edition.equalsIgnoreCase("edition"))
l.setText(l.getText() + " " + edition);
l = new Label(composite, SWT.NONE);
l.setImage(SWTImageManager.getInstance(this.getRuntime()).get(IJAMConst.IMAGE_KEY_TELEFON_JPG));
l.setLayoutData(gd);
fd = parent.getFont().getFontData()[0];
fd.setStyle(SWT.BOLD);
font = new Font(parent.getDisplay(), fd);
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "license", "label", getLanguage()));
l.setFont(font);
new Label(composite, SWT.NONE).setText(getI18nManager().getString(NAMESPACE, "freeware", "label", getLanguage()));
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "version", "label", getLanguage()));
l.setFont(font);
new Label(composite, SWT.NONE).setText(IJAMConst.VERSION_DISPLAY);
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "build", "label", getLanguage()));
l.setFont(font);
new Label(composite, SWT.NONE).setText(IJAMConst.VERSION_BUILD);
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "rkey", "label", getLanguage()));
l.setFont(font);
String key = getRuntime().getConfigManagerFactory().getConfigManager().getProperty("service.update.UpdateManager", "regkey");
if (key == null || key.length() == 0) {
key = new UUID().toString();
getRuntime().getConfigManagerFactory().getConfigManager().setProperty("service.update.UpdateManager", "regkey", key);
getRuntime().getConfigManagerFactory().getConfigManager().saveConfiguration();
}
HyperLink hl = new HyperLink(composite, SWT.NONE);
hl.setText(key);
final String rkey = key;
hl.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
if (e.button == 1)
Program.launch("https://www.janrufmonitor.de/registry.php?k=" + rkey);
}
});
new Label(composite, SWT.NONE);
new Label(composite, SWT.NONE);
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "homepage", "label", getLanguage()));
l.setFont(font);
hl = new HyperLink(composite, SWT.NONE);
hl.setText("https://www.janrufmonitor.de/");
hl.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
if (e.button == 1)
Program.launch("https://www.janrufmonitor.de/");
}
});
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "mail", "label", getLanguage()));
l.setFont(font);
hl = new HyperLink(composite, SWT.NONE);
hl.setText("support@janrufmonitor.de");
hl.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
if (e.button == 1)
Program.launch("https://www.janrufmonitor.de/support/");
}
});
l = new Label(composite, SWT.NONE);
l.setText(getI18nManager().getString(NAMESPACE, "donation", "label", getLanguage()));
l.setFont(font);
hl = new HyperLink(composite, SWT.NONE);
hl.setText("https://www.janrufmonitor.de/donation/");
hl.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
if (e.button == 1)
Program.launch("https://www.janrufmonitor.de/ihre-unterstuetzung/");
}
});
new Label(composite, SWT.NONE);
new Label(composite, SWT.NONE);
gd = new GridData(GridData.FILL_BOTH);
gd.horizontalSpan = 3;
gd.widthHint = 300;
l = new Label(composite, SWT.RIGHT);
l.setText("(c) 2008 - 2018 by Thilo Brandt ");
l.setLayoutData(gd);
return super.createDialogArea(parent);
}
use of de.janrufmonitor.util.uuid.UUID in project janrufmonitor by tbrandt77.
the class MacAddressBookProxy method findContact.
@SuppressWarnings("unchecked")
public synchronized ICaller findContact(IPhonenumber pn) throws MacAddressBookProxyException {
ICaller c = Identifier.identifyDefault(getRuntime(), pn);
if (c == null && PhonenumberAnalyzer.getInstance(getRuntime()).isInternal(pn)) {
IPhonenumber p = getRuntime().getCallerFactory().createInternalPhonenumber(pn.getTelephoneNumber());
c = getRuntime().getCallerFactory().createCaller(p);
}
if (c != null) {
if (PhonenumberAnalyzer.getInstance(getRuntime()).isInternal(pn)) {
IPhonenumber p = getRuntime().getCallerFactory().createInternalPhonenumber(pn.getTelephoneNumber());
c.setPhoneNumber(p);
}
pn = c.getPhoneNumber();
try {
List uuids = this.m_dbh.select(pn.getIntAreaCode(), pn.getAreaCode(), pn.getCallNumber());
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("List of found UUIDs: " + uuids);
}
if (uuids.size() > 0) {
String uuid = null;
for (int k = 0; k < uuids.size(); k++) {
uuid = (String) uuids.get(k);
List uids = new ArrayList();
uids.add(uuid);
List contacts = getRecordsByUIDs(uids);
if (contacts.size() > 0) {
Object contact = contacts.get(0);
ICallerList cl = getRuntime().getCallerFactory().createCallerList(2);
if (contact instanceof Map<?, ?>) {
ICaller businessCaller, privateCaller = null;
privateCaller = MacAddressBookMappingManager.getInstance().mapToJamCaller((Map<?, ?>) contact, new PrivateMacAddressBookMapping());
businessCaller = MacAddressBookMappingManager.getInstance().mapToJamCaller((Map<?, ?>) contact, new BusinessMacAddressBookMapping());
if (privateCaller == null && businessCaller != null) {
cl.add(businessCaller);
}
if (privateCaller != null && businessCaller == null) {
cl.add(privateCaller);
}
if (privateCaller != null && businessCaller != null) {
if (((IMultiPhoneCaller) businessCaller).getPhonenumbers().size() == 1) {
// only one entry available
IPhonenumber pn1 = (IPhonenumber) ((IMultiPhoneCaller) businessCaller).getPhonenumbers().get(0);
IAttribute numbertype = businessCaller.getAttribute(IMacAddressBookNumberMapping.MAPPING_ATTTRIBUTE_ID + pn1.getTelephoneNumber());
if (numbertype != null && numbertype.getValue().equalsIgnoreCase(IMacAddressBookConst.MOBILE)) {
this.m_logger.info("Bussiness caller will be dropped. Only mobile number available, but still in private contact: " + businessCaller);
businessCaller = null;
}
}
if (((IMultiPhoneCaller) privateCaller).getPhonenumbers().size() == 1 && businessCaller != null) {
// only one entry available
IPhonenumber pn1 = (IPhonenumber) ((IMultiPhoneCaller) privateCaller).getPhonenumbers().get(0);
IAttribute numbertype = privateCaller.getAttribute(IMacAddressBookNumberMapping.MAPPING_ATTTRIBUTE_ID + pn1.getTelephoneNumber());
if (numbertype != null && numbertype.getValue().equalsIgnoreCase(IMacAddressBookConst.MOBILE)) {
this.m_logger.info("Private caller will be dropped. Only mobile number available, but still in business contact: " + privateCaller);
privateCaller = null;
}
}
if (privateCaller != null) {
cl.add(privateCaller);
}
if (businessCaller != null) {
cl.add(businessCaller);
}
}
}
if (cl.size() == 1) {
ICaller rc = cl.get(0);
rc.setUUID(new UUID().toString());
if (rc instanceof IMultiPhoneCaller) {
((IMultiPhoneCaller) rc).getPhonenumbers().clear();
}
rc.setPhoneNumber(pn);
IAttribute att = getRuntime().getCallerFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_CENTRAL_NUMBER_OF_EXTENSION, pn.getTelephoneNumber());
rc.setAttribute(att);
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Exact caller match: " + rc.toString());
}
return rc;
}
if (cl.size() == 2) {
ICaller rc = null;
for (int x = 0; x < cl.size(); x++) {
rc = cl.get(x);
if (rc instanceof IMultiPhoneCaller) {
List phones = ((IMultiPhoneCaller) rc).getPhonenumbers();
IPhonenumber p = null;
for (int z = 0; z < phones.size(); z++) {
p = (IPhonenumber) phones.get(z);
if (p.getIntAreaCode().equalsIgnoreCase(pn.getIntAreaCode()) && p.getAreaCode().equalsIgnoreCase(pn.getAreaCode()) && pn.getCallNumber().startsWith(p.getCallNumber())) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Caller match (IMultiPhoneCaller): " + rc.toString());
}
rc.setUUID(new UUID().toString());
if (rc instanceof IMultiPhoneCaller) {
((IMultiPhoneCaller) rc).getPhonenumbers().clear();
}
rc.setPhoneNumber(p);
return rc;
}
}
} else {
if (rc.getPhoneNumber().getIntAreaCode().equalsIgnoreCase(pn.getIntAreaCode()) && rc.getPhoneNumber().getAreaCode().equalsIgnoreCase(pn.getAreaCode()) && pn.getCallNumber().startsWith(rc.getPhoneNumber().getCallNumber())) {
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Caller match (ICaller): " + rc.toString());
}
return rc;
}
}
}
}
}
}
} else {
Properties config = this.getRuntime().getConfigManagerFactory().getConfigManager().getProperties(NAMESPACE);
if (config.getProperty("keepextension", "false").equalsIgnoreCase("true")) {
// iterate down
String callnumber = pn.getCallNumber();
if (callnumber.length() > 1) {
pn.setCallNumber(callnumber.substring(0, callnumber.length() - 1));
ICaller ca = this.findContact(pn);
if (ca != null) {
pn.setCallNumber(callnumber);
if (ca instanceof IMultiPhoneCaller) {
((IMultiPhoneCaller) ca).getPhonenumbers().clear();
}
ca.setPhoneNumber(pn);
// set extension
if (ca.getAttributes().contains(IJAMConst.ATTRIBUTE_NAME_CENTRAL_NUMBER_OF_EXTENSION)) {
String centralnumber = ca.getAttribute(IJAMConst.ATTRIBUTE_NAME_CENTRAL_NUMBER_OF_EXTENSION).getValue();
if (pn.getTelephoneNumber().length() > centralnumber.length()) {
IAttribute att = getRuntime().getCallerFactory().createAttribute(IJAMConst.ATTRIBUTE_NAME_EXTENSION, pn.getTelephoneNumber().substring(centralnumber.length()));
ca.setAttribute(att);
}
}
if (this.m_logger.isLoggable(Level.INFO)) {
this.m_logger.info("Caller match by central number: " + ca.toString());
}
return ca;
}
}
}
}
} catch (SQLException e) {
this.m_logger.log(Level.SEVERE, e.toString(), e);
}
}
this.m_logger.info("Caller not identified: " + pn.getTelephoneNumber());
return null;
}
Aggregations