72
|
1 |
/*
|
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
* All rights reserved.
|
|
4 |
* This component and the accompanying materials are made available
|
|
5 |
* under the terms of "Eclipse Public License v1.0"
|
|
6 |
* which accompanies this distribution, and is available
|
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
*
|
|
9 |
* Initial Contributors:
|
|
10 |
* Nokia Corporation - initial contribution.
|
|
11 |
*
|
|
12 |
* Contributors:
|
|
13 |
*
|
|
14 |
* Description:
|
|
15 |
*
|
|
16 |
*/
|
|
17 |
|
|
18 |
package com.nokia.mj.impl.push;
|
|
19 |
|
|
20 |
import com.nokia.mj.impl.storage.StorageAttribute;
|
|
21 |
import com.nokia.mj.impl.storage.StorageEntry;
|
|
22 |
import com.nokia.mj.impl.storage.StorageNames;
|
|
23 |
import com.nokia.mj.impl.storage.StorageSession;
|
|
24 |
import com.nokia.mj.impl.utils.Uid;
|
|
25 |
|
|
26 |
/**
|
|
27 |
* Utility methods for handling push registrations.
|
|
28 |
*/
|
|
29 |
public final class PushUtil
|
|
30 |
{
|
|
31 |
/**
|
|
32 |
* Returns push registrations for specified application or
|
|
33 |
* application suite.
|
|
34 |
*
|
|
35 |
* @param aSession StorageSesion to be used for fetching
|
|
36 |
* the push registrations
|
|
37 |
* @param aUid either application or application suite Uid
|
|
38 |
* @return array of push registrations
|
|
39 |
*/
|
|
40 |
public static PushRegInfo[] getPushRegs(StorageSession aSession, Uid aUid)
|
|
41 |
{
|
|
42 |
// Find push registrations using application uid.
|
|
43 |
PushRegInfo[] pushRegs = getPushRegsForAppUid(aSession, aUid);
|
|
44 |
if (pushRegs.length > 0)
|
|
45 |
{
|
|
46 |
return pushRegs;
|
|
47 |
}
|
|
48 |
|
|
49 |
// Push registrations not found, so find application uids using
|
|
50 |
// suite uid and then push registrations using application uids.
|
|
51 |
Uid[] appUids = getAppUids(aSession, aUid);
|
|
52 |
PushRegInfo[][] pushRegArray = new PushRegInfo[appUids.length][];
|
|
53 |
int pushRegCount = 0;
|
|
54 |
for (int i = 0; i < appUids.length; i++)
|
|
55 |
{
|
|
56 |
pushRegArray[i] = getPushRegs(aSession, appUids[i]);
|
|
57 |
pushRegCount += pushRegArray[i].length;
|
|
58 |
}
|
|
59 |
pushRegs = new PushRegInfo[pushRegCount];
|
|
60 |
int pushRegsIndex = 0;
|
|
61 |
for (int i = 0; i < pushRegArray.length; i++)
|
|
62 |
{
|
|
63 |
for (int j = 0; j < pushRegArray[i].length; j++)
|
|
64 |
{
|
|
65 |
pushRegs[pushRegsIndex++] = pushRegArray[i][j];
|
|
66 |
}
|
|
67 |
}
|
|
68 |
return pushRegs;
|
|
69 |
}
|
|
70 |
|
|
71 |
/**
|
|
72 |
* Returns push registrations for specified application.
|
|
73 |
*
|
|
74 |
* @param aSession StorageSesion to be used for fetching
|
|
75 |
* the push registrations
|
|
76 |
* @param aUid application Uid
|
|
77 |
* @return array of push registrations
|
|
78 |
*/
|
|
79 |
private static PushRegInfo[] getPushRegsForAppUid(StorageSession aSession, Uid aUid)
|
|
80 |
{
|
|
81 |
PushRegInfo[] pushRegs = new PushRegInfo[0];
|
|
82 |
StorageEntry query = new StorageEntry();
|
|
83 |
query.addAttribute(
|
|
84 |
new StorageAttribute(StorageNames.ID, aUid.getStringValue()));
|
|
85 |
StorageEntry[] entries = aSession.search(
|
|
86 |
StorageNames.PUSH_REGISTRATIONS_TABLE, query);
|
|
87 |
if (entries != null && entries.length > 0)
|
|
88 |
{
|
|
89 |
pushRegs = new PushRegInfo[entries.length];
|
|
90 |
for (int i = 0; i < entries.length; i++)
|
|
91 |
{
|
|
92 |
Uid uid = Uid.createUid(
|
|
93 |
entries[i].getAttribute(StorageNames.ID).getValue());
|
|
94 |
String name = entries[i].getAttribute(StorageNames.NAME).getValue();
|
|
95 |
String url = entries[i].getAttribute(StorageNames.URL).getValue();
|
|
96 |
String filter = entries[i].getAttribute(StorageNames.FILTER).getValue();
|
|
97 |
int regType = Integer.parseInt(
|
|
98 |
entries[i].getAttribute(StorageNames.REGISTRATION_TYPE).getValue());
|
|
99 |
pushRegs[i] = new PushRegInfo(uid, name, url, filter, regType);
|
|
100 |
}
|
|
101 |
}
|
|
102 |
return pushRegs;
|
|
103 |
}
|
|
104 |
|
|
105 |
/**
|
|
106 |
* Returns application Uids for specified application suite.
|
|
107 |
*
|
|
108 |
* @param aSession StorageSesion to be used for fetching the Uids
|
|
109 |
* @param aSuiteUid application suite Uid
|
|
110 |
* @return array of application Uids
|
|
111 |
*/
|
|
112 |
private static Uid[] getAppUids(StorageSession aSession, Uid aUid)
|
|
113 |
{
|
|
114 |
Uid[] uids = new Uid[0];
|
|
115 |
StorageEntry query = new StorageEntry();
|
|
116 |
query.addAttribute(new StorageAttribute(
|
|
117 |
StorageNames.PACKAGE_ID, aUid.getStringValue()));
|
|
118 |
query.addAttribute(new StorageAttribute(StorageNames.ID, ""));
|
|
119 |
StorageEntry[] entries =
|
|
120 |
aSession.search(StorageNames.APPLICATION_TABLE, query);
|
|
121 |
if (entries != null && entries.length > 0)
|
|
122 |
{
|
|
123 |
uids = new Uid[entries.length];
|
|
124 |
for (int i = 0; i < entries.length; i++)
|
|
125 |
{
|
|
126 |
uids[i] = Uid.createUid(
|
|
127 |
entries[i].getAttribute(StorageNames.ID).getValue());
|
|
128 |
}
|
|
129 |
}
|
|
130 |
return uids;
|
|
131 |
}
|
|
132 |
|
|
133 |
/**
|
|
134 |
* PushRegInfo contains information of one push registration.
|
|
135 |
*/
|
|
136 |
public static final class PushRegInfo
|
|
137 |
{
|
|
138 |
/** Dynamic push registration. */
|
|
139 |
public static final int DYNAMIC = 0;
|
|
140 |
/** Static push registration. */
|
|
141 |
public static final int STATIC = 1;
|
|
142 |
|
|
143 |
/** Application Uid. */
|
|
144 |
private Uid iUid = null;
|
|
145 |
/** Application name. */
|
|
146 |
private String iName = null;
|
|
147 |
/** Push registration URL */
|
|
148 |
private String iUrl = null;
|
|
149 |
/** Filter for incoming messages/connections. */
|
|
150 |
private String iFilter = null;
|
|
151 |
/** Registration type. Either DYNAMIC or STATIC. */
|
|
152 |
private int iRegType = DYNAMIC;
|
|
153 |
|
|
154 |
PushRegInfo(
|
|
155 |
Uid aUid, String aName, String aUrl, String aFilter, int aRegType)
|
|
156 |
{
|
|
157 |
iUid = aUid;
|
|
158 |
iName = aName;
|
|
159 |
iUrl = aUrl;
|
|
160 |
iFilter = aFilter;
|
|
161 |
iRegType = aRegType;
|
|
162 |
}
|
|
163 |
|
|
164 |
/** Returns application Uid. */
|
|
165 |
public Uid getUid()
|
|
166 |
{
|
|
167 |
return iUid;
|
|
168 |
}
|
|
169 |
|
|
170 |
/** Returns application name. */
|
|
171 |
public String getName()
|
|
172 |
{
|
|
173 |
return iName;
|
|
174 |
}
|
|
175 |
|
|
176 |
/** Returns push registration URL */
|
|
177 |
public String getUrl()
|
|
178 |
{
|
|
179 |
return iUrl;
|
|
180 |
}
|
|
181 |
|
|
182 |
/** Returns filter for incoming messages/connections. */
|
|
183 |
public String getFilter()
|
|
184 |
{
|
|
185 |
return iFilter;
|
|
186 |
}
|
|
187 |
|
|
188 |
/** Returns registration type. Either DYNAMIC or STATIC. */
|
|
189 |
public int getRegType()
|
|
190 |
{
|
|
191 |
return iRegType;
|
|
192 |
}
|
|
193 |
}
|
|
194 |
}
|