c732d49e |
/*
* |
74ca6d11 |
* Copyright (C) 2020, University of the Basque Country (UPV/EHU) |
c732d49e |
*
* Contact for licensing options: <licensing-mcpttclient(at)mcopenplatform(dot)com>
*
* This file is part of MCOP MCPTT Client
*
* This is free software: you can redistribute it and/or modify it under the terms of
* the GNU General Public License as published by the Free Software Foundation, either version 3
* of the License, or (at your option) any later version.
*
* This is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.mcopenplatform.muoapi.utils;
import android.content.Context;
import android.util.Log;
import org.doubango.ngn.NgnEngine;
import org.doubango.ngn.datatype.affiliation.pidf.AffiliationType;
import org.doubango.ngn.datatype.affiliation.pidf.Presence;
import org.doubango.ngn.datatype.affiliation.pidf.Tuple;
import org.doubango.ngn.sip.NgnSipPrefrences;
import org.mcopenplatform.muoapi.BuildConfig;
import org.mcopenplatform.muoapi.ConstantsMCOP;
import org.mcopenplatform.muoapi.datatype.error.Constants;
import org.mcopenplatform.muoapi.datatype.group.GroupAffiliation;
|
175b478c |
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.NetworkInterface; |
c732d49e |
import java.util.ArrayList; |
175b478c |
import java.util.Collections; |
c732d49e |
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Utils {
private final static String TAG = org.mcopenplatform.muoapi.utils.Utils.getTAG(Utils.class.getCanonicalName());
public static Constants.CallEvent.CallTypeValidEnum validationCallType(int type){
if(type<=0)return null;
for(Constants.CallEvent.CallTypeValidEnum data:Constants.CallEvent.CallTypeValidEnum.values()){
if(data.getValue()==type) {
return data;
}
}
return null;
}
public static String getTAG(String tag){
if(BuildConfig.LOG_SHOW){
return tag;
}else{
return BuildConfig.APPLICATION_ID;
}
}
//START Affiliation Utils
public static boolean checkGroupIsExist(NgnSipPrefrences profileNow, String groupID,Context context){
boolean result=true; |
175b478c |
Map<String,NgnSipPrefrences.EntryType> stringEntryTypeMap=null;
if(groupID==null ||
groupID.trim().isEmpty() ||
context==null ||
profileNow==null ||
(stringEntryTypeMap=profileNow.getMCPTTGroupInfo())==null){
result=false;
}
if(stringEntryTypeMap!=null && stringEntryTypeMap.get(groupID)==null)
for(String groupDisplay:stringEntryTypeMap.keySet()){
if(stringEntryTypeMap.get(groupDisplay).getUriEntry().compareTo(groupID)==0)result=true;
} |
c732d49e |
return result;
}
public static boolean isAffiliatedGroup(Presence presenceNow, String groupID,Context context){ |
74ca6d11 |
return isGroupGroupAffiliationStateEnum(presenceNow,groupID,context,ConstantsMCOP.GroupAffiliationEventExtras.AffiliationStatusEnum.AffiliationStatusAffiliated); |
c732d49e |
}
public static boolean isDeaffiliatedGroup(Presence presenceNow, String groupID,Context context){ |
74ca6d11 |
return isGroupGroupAffiliationStateEnum(presenceNow,groupID,context,ConstantsMCOP.GroupAffiliationEventExtras.AffiliationStatusEnum.AffiliationStatusDeaffiliated); |
c732d49e |
}
public static boolean isDeaffiliatingGroup(Presence presenceNow, String groupID,Context context){ |
74ca6d11 |
return isGroupGroupAffiliationStateEnum(presenceNow,groupID,context,ConstantsMCOP.GroupAffiliationEventExtras.AffiliationStatusEnum.AffiliationStatusDeaffiliating); |
c732d49e |
}
public static boolean isAffiliatingGroup(Presence presenceNow, String groupID,Context context){ |
74ca6d11 |
return isGroupGroupAffiliationStateEnum(presenceNow,groupID,context,ConstantsMCOP.GroupAffiliationEventExtras.AffiliationStatusEnum.AffiliationStatusAffiliating); |
c732d49e |
}
|
74ca6d11 |
private static boolean isGroupGroupAffiliationStateEnum(Presence presenceNow, String groupID,Context context,ConstantsMCOP.GroupAffiliationEventExtras.AffiliationStatusEnum groupAffiliationStateEnum){ |
c732d49e |
ArrayList<GroupAffiliation> groupAffiliations=checkPresence(presenceNow,context);
if(groupAffiliations!=null)
for(GroupAffiliation groupAffiliation:groupAffiliations){
if(groupAffiliation.getGroupID().compareTo(groupID)==0 &&
groupAffiliation.getStateAffiliation()==groupAffiliationStateEnum)
return true;
}
return false;
}
public static ArrayList<GroupAffiliation> checkPresence(Presence presence, Context context){
if(presence==null)return new ArrayList<>();
ArrayList<GroupAffiliation> groupAffiliations=new ArrayList<>();
String mcpttClientID=null;
NgnSipPrefrences profile= NgnEngine.getInstance().getProfilesService().getProfileNow(context);
if(profile!=null)mcpttClientID=profile.getMcpttClientId();
if(presence.getTuple()!=null && mcpttClientID!=null){
for(Tuple tuple:presence.getTuple()){
if(tuple!=null && presence.getTuple().get(0).getStatus()!=null && tuple.getStatus().getAffiliations()!=null && tuple.getId().trim().equals(mcpttClientID)){
for(AffiliationType affiliation:presence.getTuple().get(0).getStatus().getAffiliations()){
GroupAffiliation groupAffiliation= null;
if(affiliation.getGroup()!=null){
groupAffiliation = new GroupAffiliation(affiliation.getGroup(),affiliation.getStatus());
groupAffiliations.add(groupAffiliation);
}
}
}
}
}
return groupAffiliations;
}
public static Map<String,Integer> groupAffiliationToMap(List<GroupAffiliation> groupAffiliations){
if(BuildConfig.DEBUG && groupAffiliations!=null) Log.d(TAG,"groupAffiliationToMap size: "+groupAffiliations.size());
Map<String,Integer> groups=new HashMap<>();
if(groupAffiliations!=null)
for(GroupAffiliation group:groupAffiliations){
groups.put(group.getGroupID(),group.getStateAffiliation().getValue());
}
return groups;
}
//END Affiliation Utils |
175b478c |
|
c732d49e |
} |