use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class FritzBoxUUIDManager method getUUID.
public String getUUID(String d, String n, String m) {
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yy HH:mm");
try {
date = sdf.parse(d);
} catch (ParseException e) {
return null;
}
IPhonenumber pn = PhonenumberAnalyzer.getInstance(PIMRuntime.getInstance()).toIdentifiedPhonenumber(n, true);
IMsn msn = PIMRuntime.getInstance().getCallFactory().createMsn(m, "");
return this.getUUID(date, pn, msn);
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class ExternalApplicationLauncher method getDataList.
private List getDataList() {
if (this.dataList == null || this.dataList.size() == 0) {
this.dataList = new ArrayList();
this.removableData = new ArrayList();
String msnList = this.getPreferenceStore().getString(this.CONFIG_NAMESPACE + SEPARATOR + "list");
if (msnList.trim().length() > 0) {
StringTokenizer st = new StringTokenizer(msnList, ",");
while (st.hasMoreTokens()) {
String number = st.nextToken().trim();
if (number.length() > 0) {
IMsn msn = this.getRuntime().getMsnManager().createMsn(number);
String soundfile = this.getPreferenceStore().getString(this.CONFIG_NAMESPACE + SEPARATOR + number + "_extapp");
if (soundfile != null && soundfile.length() > 0) {
ExtAppDataObject sdo = new ExtAppDataObject(msn, soundfile);
this.dataList.add(sdo);
}
}
}
}
}
return this.dataList;
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class ExternalApplicationLauncher method openDataWizard.
private void openDataWizard(String msn, String file) {
Display display = DisplayManager.getDefaultDisplay();
Shell shell = new Shell(display);
// Create the dialog
IMsn oldMsn = this.getRuntime().getMsnManager().createMsn(msn);
ExtAppDataObject oldSdo = new ExtAppDataObject(oldMsn, file);
WizardDialog.setDefaultImage(SWTImageManager.getInstance(this.getRuntime()).get(IJAMConst.IMAGE_KEY_PIM_ICON));
ExtAppDataWizard sdoW = new ExtAppDataWizard(oldSdo);
WizardDialog dlg = new WizardDialog(shell, sdoW);
dlg.open();
if (dlg.getReturnCode() == WizardDialog.OK) {
ExtAppDataObject result = sdoW.getResult();
this.dataList.remove(oldSdo);
this.dataList.add(result);
}
tv.setInput(this.dataList);
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class HsqldbCallDatabaseHandler method prepareStatement.
private String prepareStatement(IFilter[] filters, int count, int offset, boolean isCounter, ISearchTerm[] searchTerms) {
StringBuffer sql = new StringBuffer();
// build SQL statement
sql.append("SELECT");
if (filters.length == 1 && filters[0] == null)
filters = null;
// 2008/11/28: optimized attribute filter call
if (filters != null && filters.length > 0 && hasOnlyAttributeFilter(filters)) {
if (isCounter) {
sql.append(" COUNT(calls.uuid) ");
} else {
sql.append(" content ");
}
sql.append("FROM attributes LEFT JOIN calls ON calls.uuid=attributes.ref AND ");
IFilter f = null;
for (int i = 0; i < filters.length; i++) {
f = filters[i];
if (f.getType() == FilterType.ATTRIBUTE) {
IAttributeMap m = ((AttributeFilter) f).getAttributeMap();
if (m != null && m.size() > 0) {
sql.append("(");
sql.append("(");
Iterator iter = m.iterator();
IAttribute a = null;
while (iter.hasNext()) {
a = (IAttribute) iter.next();
sql.append("attributes.name='");
sql.append(a.getName());
sql.append("'");
sql.append(" AND ");
sql.append("attributes.value='");
sql.append(a.getValue());
sql.append("'");
if (iter.hasNext())
sql.append(" OR ");
}
sql.append("))");
}
}
}
if (searchTerms != null && searchTerms.length > 0) {
sql.append(" AND");
sql.append(createSearchTerm(searchTerms));
}
} else if (filters != null && filters.length > 0) {
int limit = -1;
for (int i = 0; i < filters.length; i++) {
if (filters[i] != null && filters[i].getType() == FilterType.ITEMCOUNT) {
limit = ((ItemCountFilter) filters[i]).getLimit();
if (!isCounter) {
// 2008/05/19: to be done since offset was introduced !!
count = limit;
offset = 0;
}
}
}
if (isCounter) {
sql.append(" COUNT(calls.uuid) ");
} else {
sql.append(" content ");
}
sql.append("FROM calls");
if (hasAttributeFilter(filters))
sql.append(", attributes");
if (filters.length == 1 && filters[0] != null && filters[0].getType() == FilterType.ITEMCOUNT)
sql.append("");
else
sql.append(" WHERE ");
IFilter f = null;
boolean isCallerFilter = false;
boolean isMsnFilter = false;
for (int i = 0; i < filters.length; i++) {
if (filters[i] != null && filters[i].getType() == FilterType.ITEMCOUNT) {
// limit=((ItemCountFilter)filters[i]).getLimit();
continue;
}
f = filters[i];
if (f == null)
continue;
if (isCallerFilter && (f.getType() == FilterType.CALLER || f.getType() == FilterType.PHONENUMBER)) {
if (i > 0)
sql.append(" OR ");
} else if (isMsnFilter && f.getType() == FilterType.MSN) {
if (i > 0)
sql.append(" OR ");
} else {
if (i > 0 && filters[i - 1].getType() != FilterType.ITEMCOUNT)
sql.append(" AND ");
}
if (f.getType() == FilterType.DATE) {
DateFilter df = (DateFilter) f;
sql.append("(calls.cdate>");
sql.append((df.getDateTo() == null ? new Date().getTime() : df.getDateTo().getTime()));
sql.append(" AND calls.cdate<");
sql.append((df.getDateFrom() == null ? new Date().getTime() : df.getDateFrom().getTime()));
sql.append(")");
}
if (f.getType() == FilterType.YEAR) {
YearFilter df = (YearFilter) f;
sql.append("(calls.cdate>");
sql.append((df.getDateFrom() == null ? new Date().getTime() : df.getDateFrom().getTime()));
sql.append(" AND calls.cdate<");
sql.append((df.getDateTo() == null ? new Date().getTime() : df.getDateTo().getTime()));
sql.append(")");
}
if (f.getType() == FilterType.MONTH_YEAR) {
MonthYearFilter df = (MonthYearFilter) f;
sql.append("(calls.cdate>");
sql.append((df.getDateFrom() == null ? new Date().getTime() : df.getDateFrom().getTime()));
sql.append(" AND calls.cdate<");
sql.append((df.getDateTo() == null ? new Date().getTime() : df.getDateTo().getTime()));
sql.append(")");
}
if (f.getType() == FilterType.CALLER) {
if (!isCallerFilter)
sql.append("(");
isCallerFilter = true;
ICaller c = (ICaller) f.getFilterObject();
IPhonenumber pn = c.getPhoneNumber();
sql.append("(calls.country='");
sql.append(pn.getIntAreaCode());
sql.append("' AND calls.areacode='");
sql.append(pn.getAreaCode());
sql.append("' AND calls.number='");
sql.append(pn.getCallNumber());
sql.append("')");
if (isCallerFilter && ((i + 1) >= filters.length || (filters[i + 1] != null && (filters[i + 1].getType() != FilterType.CALLER))))
sql.append(")");
}
if (f.getType() == FilterType.PHONENUMBER) {
if (!isCallerFilter)
sql.append("(");
isCallerFilter = true;
IPhonenumber pn = (IPhonenumber) f.getFilterObject();
sql.append("(calls.country='");
sql.append(pn.getIntAreaCode());
sql.append("' AND calls.areacode='");
sql.append(pn.getAreaCode());
sql.append("' AND calls.number='");
sql.append(pn.getCallNumber());
sql.append("')");
if (isCallerFilter && ((i + 1) >= filters.length || (filters[i + 1] != null && (filters[i + 1].getType() != FilterType.PHONENUMBER))))
sql.append(")");
}
if (f.getType() == FilterType.CIP) {
ICip cip = (ICip) f.getFilterObject();
sql.append("calls.cip='");
sql.append(cip.getCIP());
sql.append("'");
}
if (f.getType() == FilterType.MSN) {
IMsn[] msn = (IMsn[]) f.getFilterObject();
if (msn != null && msn.length > 0) {
if (!isMsnFilter)
sql.append("(");
isMsnFilter = true;
sql.append("(");
for (int j = 0; j < msn.length; j++) {
if (j > 0)
sql.append(" OR ");
sql.append("calls.msn='");
sql.append(msn[j].getMSN());
sql.append("'");
}
sql.append(")");
if (isMsnFilter && ((i + 1) >= filters.length || (filters[i + 1] != null && (filters[i + 1].getType() != FilterType.MSN))))
sql.append(")");
}
}
if (f.getType() == FilterType.UUID) {
String[] uuids = (String[]) f.getFilterObject();
if (uuids != null && uuids.length > 0) {
sql.append("(");
for (int j = 0; j < uuids.length; j++) {
if (j > 0)
sql.append(" OR ");
sql.append("calls.uuid='");
sql.append(uuids[i]);
sql.append("'");
}
sql.append(")");
}
}
if (f.getType() == FilterType.ATTRIBUTE) {
IAttributeMap m = ((AttributeFilter) f).getAttributeMap();
if (m != null && m.size() > 0) {
sql.append("(");
sql.append("calls.uuid=attributes.ref AND (");
Iterator iter = m.iterator();
IAttribute a = null;
while (iter.hasNext()) {
a = (IAttribute) iter.next();
sql.append("attributes.name='");
sql.append(a.getName());
sql.append("'");
sql.append(" AND ");
sql.append("attributes.value='");
sql.append(a.getValue());
sql.append("'");
if (iter.hasNext())
sql.append(" OR ");
}
sql.append("))");
}
}
}
if (searchTerms != null && searchTerms.length > 0) {
if (filters.length == 1 && filters[0] != null && filters[0].getType() == FilterType.ITEMCOUNT)
sql.append(" WHERE");
else
sql.append(" AND");
sql.append(createSearchTerm(searchTerms));
}
if (limit > 0 && !isCounter) {
sql.append(" ORDER BY cdate DESC");
}
} else {
if (isCounter) {
sql.append(" COUNT(calls.uuid) ");
} else {
sql.append(" content ");
}
sql.append("FROM calls");
if (count > 0 && offset >= 0) {
sql.append(" AS rtable");
}
if (searchTerms != null && searchTerms.length > 0) {
sql.append(" WHERE");
sql.append(createSearchTerm(searchTerms));
}
}
if (count > 0 && offset >= 0) {
sql.append(" LIMIT ");
sql.append(count);
sql.append(" OFFSET ");
sql.append(offset);
}
sql.append(";");
if (this.m_logger.isLoggable(Level.INFO))
this.m_logger.info(sql.toString());
return sql.toString();
}
use of de.janrufmonitor.framework.IMsn in project janrufmonitor by tbrandt77.
the class AbstractFilterSerializer method getFilterFromString.
/**
* Transforms a String representation of a filter into an IFilter object.
* @param fstring string representation of the filter
* @return a valid IFilter object or null, if string is invalid.
*/
public IFilter getFilterFromString(String fstring) {
// IFilter filter = null;
if (fstring.length() > 0) {
StringTokenizer st = new StringTokenizer(fstring, ",");
String token = null;
if (st.countTokens() > 0) {
token = st.nextToken().trim();
FilterType ft = new FilterType(Integer.parseInt(token));
if (ft.equals(FilterType.DATE)) {
Date d1 = null;
long dl1 = Long.parseLong(st.nextToken());
if (dl1 > 0)
d1 = new Date(dl1);
Date d2 = new Date(Long.parseLong(st.nextToken()));
long frame = -1;
if (st.hasMoreTokens())
frame = Long.parseLong(st.nextToken());
// calculate today
if (frame == -100) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
d2 = c.getTime();
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 0);
d1 = c.getTime();
return new DateFilter(d1, d2, frame);
}
if (frame == -101) {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DAY_OF_WEEK, c.get(Calendar.DAY_OF_WEEK) - 1);
// 2008/03/25: fixed sunday switch bug
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
c.add(Calendar.WEEK_OF_MONTH, -1);
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
}
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
d2 = c.getTime();
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 0);
d1 = c.getTime();
return new DateFilter(d1, d2, frame);
}
if (frame == -107) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 0);
d1 = c.getTime();
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
d2 = c.getTime();
return new DateFilter(d1, d2, frame);
}
if (frame == -108) {
Calendar c = Calendar.getInstance();
c.add(Calendar.WEEK_OF_MONTH, -1);
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 0);
d1 = c.getTime();
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
d2 = c.getTime();
return new DateFilter(d1, d2, frame);
}
if (frame == -130) {
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 0);
d1 = c.getTime();
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
d2 = c.getTime();
return new DateFilter(d1, d2, frame);
}
if (frame == -131) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 0);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
d1 = c.getTime();
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
d2 = c.getTime();
return new DateFilter(d1, d2, frame);
}
if (frame > -1)
return new DateFilter(frame);
return new DateFilter(d1, d2);
}
if (ft.equals(FilterType.YEAR)) {
String y = st.nextToken();
return new YearFilter(Integer.parseInt(y));
}
if (ft.equals(FilterType.MONTH_YEAR)) {
String y = st.nextToken();
String m = st.nextToken();
return new MonthYearFilter(Integer.parseInt(y), Integer.parseInt(m));
}
if (ft.equals(FilterType.MSN)) {
IMsn[] msns = new IMsn[st.countTokens()];
int i = 0;
while (st.hasMoreTokens()) {
msns[i] = this.getRuntime().getCallFactory().createMsn(st.nextToken(), "");
i++;
}
return new MsnFilter(msns);
}
if (ft.equals(FilterType.CIP)) {
String cip = st.nextToken();
return new CipFilter(this.getRuntime().getCallFactory().createCip(cip, ""));
}
if (ft.equals(FilterType.CALLER)) {
String caller = st.nextToken();
if (caller.equalsIgnoreCase("clired")) {
IPhonenumber pn = getRuntime().getCallerFactory().createPhonenumber(true);
ICaller c = getRuntime().getCallerFactory().createCaller(getRuntime().getCallerFactory().createName("", ""), pn);
return new CallerFilter(c);
}
if (caller.equalsIgnoreCase(IJAMConst.INTERNAL_CALL)) {
IPhonenumber pn = getRuntime().getCallerFactory().createPhonenumber(caller, "", st.nextToken());
ICaller c = getRuntime().getCallerFactory().createCaller(getRuntime().getCallerFactory().createName("", ""), pn);
return new CallerFilter(c);
} else {
IPhonenumber pn = getRuntime().getCallerFactory().createPhonenumber(caller, st.nextToken(), st.nextToken());
ICaller c = getRuntime().getCallerFactory().createCaller(getRuntime().getCallerFactory().createName("", ""), pn);
return new CallerFilter(c);
}
}
if (ft.equals(FilterType.PHONENUMBER)) {
String intarea = st.nextToken();
String area = "";
String number = "";
if (st.hasMoreTokens())
area = st.nextToken().trim();
if (area.equalsIgnoreCase("+"))
area = "";
if (st.hasMoreTokens())
number = st.nextToken().trim();
if (number.equalsIgnoreCase("+"))
number = "";
IPhonenumber pn = this.getRuntime().getCallerFactory().createPhonenumber(intarea, area, number);
return new PhonenumberFilter(pn);
}
if (ft.equals(FilterType.ITEMCOUNT)) {
String limit = st.nextToken().trim();
return new ItemCountFilter(Integer.parseInt(limit));
}
if (ft.equals(FilterType.ATTRIBUTE)) {
IAttributeMap m = getRuntime().getCallFactory().createAttributeMap();
// return new AttributeFilter(m);
String[] t = null;
while (st.hasMoreTokens()) {
t = st.nextToken().split("=");
m.add(getRuntime().getCallFactory().createAttribute(t[0], t[1]));
}
return new AttributeFilter(m);
}
if (ft.equals(FilterType.CHARACTER)) {
String[] t = st.nextToken().split("=");
return new CharacterFilter(t[1].trim(), t[0].trim());
}
if (ft.equals(FilterType.UUID)) {
String[] uuids = st.nextToken().split(";");
return new UUIDFilter(uuids);
}
// TODO: more filters to be added here
}
}
return null;
}
Aggregations