pull/261/head
commit
518bc7271a
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
import org.wso2.carbon.apimgt.api.model.APIRevisionDeployment;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
public class APIRevision implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private int id;
|
||||
private String apiUUID;
|
||||
private String revisionUUID;
|
||||
private String description;
|
||||
private String createdBy;
|
||||
private String createdTime;
|
||||
private List<APIRevisionDeployment> apiRevisionDeploymentList;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getApiUUID() {
|
||||
return apiUUID;
|
||||
}
|
||||
|
||||
public void setApiUUID(String apiUUID) {
|
||||
this.apiUUID = apiUUID;
|
||||
}
|
||||
|
||||
public String getRevisionUUID() {
|
||||
return revisionUUID;
|
||||
}
|
||||
|
||||
public void setRevisionUUID(String revisionUUID) {
|
||||
this.revisionUUID = revisionUUID;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getCreatedBy() {
|
||||
return createdBy;
|
||||
}
|
||||
|
||||
public void setCreatedBy(String createdBy) {
|
||||
this.createdBy = createdBy;
|
||||
}
|
||||
|
||||
public String getCreatedTime() {
|
||||
return createdTime;
|
||||
}
|
||||
|
||||
public void setCreatedTime(String createdTime) {
|
||||
this.createdTime = createdTime;
|
||||
}
|
||||
|
||||
public List<APIRevisionDeployment> getApiRevisionDeploymentList() {
|
||||
return apiRevisionDeploymentList;
|
||||
}
|
||||
|
||||
public void setApiRevisionDeploymentList(List<APIRevisionDeployment> apiRevisionDeploymentList) {
|
||||
this.apiRevisionDeploymentList = apiRevisionDeploymentList;
|
||||
}
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class APIRevisionDeployment implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private int id;
|
||||
private String revisionUUID;
|
||||
private String deployment;
|
||||
private String vhost;
|
||||
private boolean isDisplayOnDevportal;
|
||||
private String deployedTime;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getRevisionUUID() {
|
||||
return revisionUUID;
|
||||
}
|
||||
|
||||
public void setRevisionUUID(String revisionUUID) {
|
||||
this.revisionUUID = revisionUUID;
|
||||
}
|
||||
|
||||
public String getDeployment() {
|
||||
return deployment;
|
||||
}
|
||||
|
||||
public void setDeployment(String deployment) {
|
||||
this.deployment = deployment;
|
||||
}
|
||||
|
||||
public String getVhost() {
|
||||
return vhost;
|
||||
}
|
||||
|
||||
public void setVhost(String vhost) {
|
||||
this.vhost = vhost;
|
||||
}
|
||||
|
||||
public boolean isDisplayOnDevportal() {
|
||||
return isDisplayOnDevportal;
|
||||
}
|
||||
|
||||
public void setDisplayOnDevportal(boolean displayOnDevportal) {
|
||||
isDisplayOnDevportal = displayOnDevportal;
|
||||
}
|
||||
|
||||
public String getDeployedTime() {
|
||||
return deployedTime;
|
||||
}
|
||||
|
||||
public void setDeployedTime(String deployedTime) {
|
||||
this.deployedTime = deployedTime;
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* API CORS Configuration
|
||||
*/
|
||||
public class CORSConfiguration {
|
||||
|
||||
private boolean corsConfigurationEnabled;
|
||||
private List<String> accessControlAllowOrigins;
|
||||
private boolean accessControlAllowCredentials;
|
||||
private List<String> accessControlAllowHeaders;
|
||||
private List<String> accessControlAllowMethods;
|
||||
|
||||
public CORSConfiguration(boolean corsConfigurationEnabled, List<String> accessControlAllowOrigins,
|
||||
boolean accessControlAllowCredentials,
|
||||
List<String> accessControlAllowHeaders, List<String> accessControlAllowMethods) {
|
||||
this.corsConfigurationEnabled = corsConfigurationEnabled;
|
||||
this.accessControlAllowOrigins = accessControlAllowOrigins;
|
||||
this.accessControlAllowCredentials = accessControlAllowCredentials;
|
||||
this.accessControlAllowHeaders = accessControlAllowHeaders;
|
||||
this.accessControlAllowMethods = accessControlAllowMethods;
|
||||
}
|
||||
|
||||
public boolean isCorsConfigurationEnabled() {
|
||||
return corsConfigurationEnabled;
|
||||
}
|
||||
|
||||
public void setCorsConfigurationEnabled(boolean corsConfigurationEnabled) {
|
||||
this.corsConfigurationEnabled = corsConfigurationEnabled;
|
||||
}
|
||||
|
||||
public List<String> getAccessControlAllowOrigins() {
|
||||
return accessControlAllowOrigins;
|
||||
}
|
||||
|
||||
public void setAccessControlAllowOrigins(List<String> accessControlAllowOrigins) {
|
||||
this.accessControlAllowOrigins = accessControlAllowOrigins;
|
||||
}
|
||||
|
||||
public boolean isAccessControlAllowCredentials() {
|
||||
return accessControlAllowCredentials;
|
||||
}
|
||||
|
||||
public void setAccessControlAllowCredentials(boolean accessControlAllowCredentials) {
|
||||
this.accessControlAllowCredentials = accessControlAllowCredentials;
|
||||
}
|
||||
|
||||
public List<String> getAccessControlAllowHeaders() {
|
||||
return accessControlAllowHeaders;
|
||||
}
|
||||
|
||||
public void setAccessControlAllowHeaders(List<String> accessControlAllowHeaders) {
|
||||
this.accessControlAllowHeaders = accessControlAllowHeaders;
|
||||
}
|
||||
|
||||
public List<String> getAccessControlAllowMethods() {
|
||||
return accessControlAllowMethods;
|
||||
}
|
||||
|
||||
public void setAccessControlAllowMethods(List<String> accessControlAllowMethods) {
|
||||
this.accessControlAllowMethods = accessControlAllowMethods;
|
||||
}
|
||||
}
|
@ -0,0 +1,192 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
public class Documentation {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private String id;
|
||||
private String documentId;
|
||||
private DocumentationType type;
|
||||
private String name;
|
||||
private String summary;
|
||||
private DocumentSourceType sourceType;
|
||||
private String sourceUrl;
|
||||
private DocumentVisibility visibility;
|
||||
private Date lastUpdated;
|
||||
private String filePath;
|
||||
private Date createdDate;
|
||||
private String otherTypeName;
|
||||
|
||||
public String getOtherTypeName() {
|
||||
return this.otherTypeName;
|
||||
}
|
||||
|
||||
public void setOtherTypeName(String otherTypeName) {
|
||||
this.otherTypeName = otherTypeName;
|
||||
}
|
||||
|
||||
public String getFilePath() {
|
||||
return this.filePath;
|
||||
}
|
||||
|
||||
public void setFilePath(String filePath) {
|
||||
this.filePath = filePath;
|
||||
}
|
||||
|
||||
public String getSourceUrl() {
|
||||
return this.sourceUrl;
|
||||
}
|
||||
|
||||
public void setSourceUrl(String sourceUrl) {
|
||||
this.sourceUrl = sourceUrl;
|
||||
}
|
||||
|
||||
public Documentation(DocumentationType type, String name) {
|
||||
this.type = type;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
} else if (o != null && this.getClass() == o.getClass()) {
|
||||
Documentation that = (Documentation)o;
|
||||
return this.name.equals(that.name) && this.type == that.type;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public DocumentationType getType() {
|
||||
return this.type;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
public String getSummary() {
|
||||
return this.summary;
|
||||
}
|
||||
|
||||
public void setSummary(String summary) {
|
||||
this.summary = summary;
|
||||
}
|
||||
|
||||
public DocumentVisibility getVisibility() {
|
||||
return this.visibility;
|
||||
}
|
||||
|
||||
public void setVisibility(DocumentVisibility visibility) {
|
||||
this.visibility = visibility;
|
||||
}
|
||||
|
||||
public DocumentSourceType getSourceType() {
|
||||
return this.sourceType;
|
||||
}
|
||||
|
||||
public void setSourceType(DocumentSourceType sourceType) {
|
||||
this.sourceType = sourceType;
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
int result = this.type.hashCode();
|
||||
result = 31 * result + this.name.hashCode();
|
||||
return result;
|
||||
}
|
||||
|
||||
public Date getLastUpdated() {
|
||||
return this.lastUpdated;
|
||||
}
|
||||
|
||||
public void setLastUpdated(Date lastUpdated) {
|
||||
this.lastUpdated = lastUpdated;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDocumentId() {
|
||||
return documentId;
|
||||
}
|
||||
|
||||
public void setDocumentId(String documentId) {
|
||||
this.documentId = documentId;
|
||||
}
|
||||
|
||||
public Date getCreatedDate() {
|
||||
return this.createdDate;
|
||||
}
|
||||
|
||||
public void setCreatedDate(Date createdDate) {
|
||||
this.createdDate = createdDate;
|
||||
}
|
||||
|
||||
public static enum DocumentVisibility {
|
||||
OWNER_ONLY("owner_only"),
|
||||
PRIVATE("private"),
|
||||
API_LEVEL("api_level");
|
||||
|
||||
private String visibility;
|
||||
|
||||
private DocumentVisibility(String visibility) {
|
||||
this.visibility = visibility;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum DocumentSourceType {
|
||||
INLINE("In line"),
|
||||
MARKDOWN("Markdown"),
|
||||
URL("URL"),
|
||||
FILE("File");
|
||||
|
||||
private String type;
|
||||
|
||||
private DocumentSourceType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum DocumentationType {
|
||||
HOWTO("How To"),
|
||||
SAMPLES("Samples"),
|
||||
PUBLIC_FORUM("Public Forum"),
|
||||
SUPPORT_FORUM("Support Forum"),
|
||||
API_MESSAGE_FORMAT("API Message Format"),
|
||||
SWAGGER_DOC("Swagger API Definition"),
|
||||
OTHER("Other");
|
||||
|
||||
private String type;
|
||||
|
||||
private DocumentationType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
public class Mediation {
|
||||
|
||||
private String uuid;
|
||||
private String name;
|
||||
private String type;
|
||||
private String config;
|
||||
private boolean isGlobal;
|
||||
|
||||
public Mediation(){}
|
||||
|
||||
public void setUuid(String id){
|
||||
this.uuid=id;
|
||||
}
|
||||
public String getUuid(){return uuid;}
|
||||
|
||||
public void setName(String name){this.name=name;}
|
||||
|
||||
public String getName(){return name;}
|
||||
|
||||
public void setType(String mType){this.type=mType;}
|
||||
|
||||
public String getType(){return type;}
|
||||
|
||||
public void setConfig(String mConfig){this.config=mConfig;}
|
||||
|
||||
public String getConfig(){return config;}
|
||||
|
||||
public boolean isGlobal() {
|
||||
return isGlobal;
|
||||
}
|
||||
|
||||
public void setGlobal(boolean isGlobal) {
|
||||
this.isGlobal = isGlobal;
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Scope implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
String key;
|
||||
String name;
|
||||
String roles;
|
||||
String description;
|
||||
String id;
|
||||
int usageCount;
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getRoles() {
|
||||
return roles;
|
||||
}
|
||||
|
||||
public void setRoles(String roles) {
|
||||
this.roles = roles;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getUsageCount() {
|
||||
return usageCount;
|
||||
}
|
||||
|
||||
public void setUsageCount(int usageCount) {
|
||||
this.usageCount = usageCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
Scope scope = (Scope) o;
|
||||
|
||||
if (id != null ? !id.equals(scope.id) : scope.id != null) return false;
|
||||
if (!key.equals(scope.key)) return false;
|
||||
if (!name.equals(scope.name)) return false;
|
||||
if (roles != null ? !roles.equals(scope.roles) : scope.roles != null) return false;
|
||||
return description != null ? description.equals(scope.description) : scope.description == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(key, name, roles, description, id);
|
||||
}
|
||||
}
|
@ -0,0 +1,440 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.apimgt.extension.rest.api.dto.APIInfo;
|
||||
|
||||
import org.json.simple.JSONValue;
|
||||
import org.wso2.carbon.apimgt.api.dto.ConditionGroupDTO;
|
||||
import org.wso2.carbon.apimgt.api.model.APIProductIdentifier;
|
||||
import org.wso2.carbon.apimgt.api.model.Scope;
|
||||
import org.wso2.carbon.apimgt.api.model.policy.PolicyConstants;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.*;
|
||||
|
||||
public class URITemplate implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String uriTemplate;
|
||||
private String resourceURI;
|
||||
private String resourceSandboxURI;
|
||||
private String httpVerb;
|
||||
private String authType;
|
||||
private LinkedHashSet<String> httpVerbs = new LinkedHashSet<String>();
|
||||
private List<String> authTypes = new ArrayList<String>();
|
||||
private List<String> throttlingConditions = new ArrayList<String>();
|
||||
private String applicableLevel;
|
||||
private String throttlingTier;
|
||||
private List<String> throttlingTiers = new ArrayList<String>();
|
||||
private org.wso2.carbon.apimgt.api.model.Scope scope;
|
||||
private String mediationScript;
|
||||
private List<org.wso2.carbon.apimgt.api.model.Scope> scopes = new ArrayList<org.wso2.carbon.apimgt.api.model.Scope>();
|
||||
private Map<String, String> mediationScripts = new HashMap<String, String>();
|
||||
private ConditionGroupDTO[] conditionGroups;
|
||||
private int id;
|
||||
private Set<APIProductIdentifier> usedByProducts = new HashSet<>();
|
||||
private String amznResourceName;
|
||||
private int amznResourceTimeout;
|
||||
|
||||
public ConditionGroupDTO[] getConditionGroups() {
|
||||
return conditionGroups;
|
||||
}
|
||||
|
||||
public void setConditionGroups(ConditionGroupDTO[] conditionGroups) {
|
||||
this.conditionGroups = conditionGroups;
|
||||
}
|
||||
|
||||
public String getMediationScript() {
|
||||
return mediationScript;
|
||||
}
|
||||
|
||||
|
||||
public List<String> getThrottlingConditions() {
|
||||
return throttlingConditions;
|
||||
}
|
||||
|
||||
public void setThrottlingConditions(List<String> throttlingConditions) {
|
||||
this.throttlingConditions = throttlingConditions;
|
||||
}
|
||||
|
||||
public void setMediationScript(String mediationScript) {
|
||||
this.mediationScript = mediationScript;
|
||||
}
|
||||
/**
|
||||
* Set mediation script for a given http method
|
||||
* @param method http method name
|
||||
* @param mediationScript mediation script content
|
||||
*/
|
||||
public void setMediationScripts(String method, String mediationScript){
|
||||
if (mediationScript != null && !mediationScript.trim().equals("") && !mediationScript.trim().equals("null")){
|
||||
mediationScripts.put(method, mediationScript);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Generating the script by aggregating scripts of each http method to form a single script in to be
|
||||
* used when generating synapse configuration file.
|
||||
*
|
||||
* @return aggregated script in the following format,
|
||||
* if (http-method = 'GET'){
|
||||
* //script for GET
|
||||
* }
|
||||
* ....
|
||||
* ....
|
||||
* if (http-method = 'POST'){
|
||||
* //script for POST
|
||||
* }
|
||||
*/
|
||||
public String getAggregatedMediationScript(){
|
||||
if (mediationScripts.isEmpty()){
|
||||
return "null";
|
||||
}else if (mediationScripts.size() == 1 && httpVerbs.size() == 1){
|
||||
return mediationScript;
|
||||
}else{
|
||||
StringBuilder aggregatedScript = new StringBuilder();
|
||||
|
||||
for (Map.Entry<String, String> entry : mediationScripts.entrySet()){
|
||||
String httpMethod = entry.getKey();
|
||||
String mediationScript = entry.getValue();
|
||||
|
||||
aggregatedScript.append("if (mc.getProperty('REST_METHOD') == '").append(httpMethod).append("'){");
|
||||
aggregatedScript.append(mediationScript);
|
||||
aggregatedScript.append("}");
|
||||
|
||||
}
|
||||
|
||||
return aggregatedScript.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public String getThrottlingTier() {
|
||||
return throttlingTier;
|
||||
}
|
||||
|
||||
public void setThrottlingTier(String throttlingTier) {
|
||||
this.throttlingTier = throttlingTier;
|
||||
}
|
||||
|
||||
public List<String> getThrottlingTiers(){
|
||||
return throttlingTiers;
|
||||
}
|
||||
|
||||
public void setThrottlingTiers(List<String> throttlingTiers) {
|
||||
this.throttlingTiers = throttlingTiers;
|
||||
}
|
||||
|
||||
public String getHTTPVerb() {
|
||||
return httpVerb;
|
||||
}
|
||||
|
||||
public void setHTTPVerb(String httpVerb) {
|
||||
this.httpVerb = httpVerb;
|
||||
}
|
||||
|
||||
public String getAuthType() {
|
||||
return authType;
|
||||
}
|
||||
|
||||
public void setAuthType(String authType) {
|
||||
this.authType = authType;
|
||||
|
||||
}
|
||||
|
||||
public String getResourceURI() {
|
||||
return resourceURI;
|
||||
}
|
||||
|
||||
public void setResourceURI(String resourceURI) {
|
||||
this.resourceURI = resourceURI;
|
||||
}
|
||||
|
||||
public boolean isResourceURIExist(){
|
||||
return this.resourceURI != null;
|
||||
}
|
||||
|
||||
public String getResourceSandboxURI() {
|
||||
return resourceSandboxURI;
|
||||
}
|
||||
|
||||
public void setResourceSandboxURI(String resourceSandboxURI) {
|
||||
this.resourceSandboxURI = resourceSandboxURI;
|
||||
}
|
||||
|
||||
public boolean isResourceSandboxURIExist(){
|
||||
return this.resourceSandboxURI != null;
|
||||
}
|
||||
|
||||
public String getUriTemplate() {
|
||||
return uriTemplate;
|
||||
}
|
||||
|
||||
public void setUriTemplate(String template) {
|
||||
this.uriTemplate = template;
|
||||
}
|
||||
|
||||
public void setHttpVerbs(String httpVerb) {
|
||||
|
||||
httpVerbs.add(httpVerb);
|
||||
}
|
||||
|
||||
public LinkedHashSet<String> getHttpVerbs() {
|
||||
|
||||
return httpVerbs;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public void setAuthTypes(String authType) {
|
||||
|
||||
authTypes.add(authType);
|
||||
}
|
||||
|
||||
public String getAuthTypes() {
|
||||
|
||||
return authType;
|
||||
}
|
||||
|
||||
|
||||
public String getMethodsAsString() {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (String method : httpVerbs) {
|
||||
stringBuilder.append(method).append(" ");
|
||||
}
|
||||
return stringBuilder.toString().trim();
|
||||
}
|
||||
|
||||
public String getAuthTypeAsString() {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (String authType : authTypes) {
|
||||
stringBuilder.append(authType).append(" ");
|
||||
}
|
||||
return stringBuilder.toString().trim();
|
||||
}
|
||||
|
||||
public String getThrottlingConditionsAsString() {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (String authType : throttlingConditions) {
|
||||
stringBuilder.append(authType).append(" ");
|
||||
}
|
||||
return stringBuilder.toString().trim();
|
||||
}
|
||||
|
||||
public void setThrottlingTiers(String tier) {
|
||||
throttlingTiers.add(tier);
|
||||
}
|
||||
|
||||
public String getThrottlingTiersAsString() {
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
for (String tier : throttlingTiers) {
|
||||
if (tier.contains(PolicyConstants.THROTTLING_TIER_CONTENT_AWARE_SEPERATOR)) {
|
||||
stringBuilder.append(tier.substring(0,
|
||||
tier.indexOf(PolicyConstants.THROTTLING_TIER_CONTENT_AWARE_SEPERATOR)).trim()).append(" ");
|
||||
} else {
|
||||
stringBuilder.append(tier.trim()).append(" ");
|
||||
}
|
||||
}
|
||||
return stringBuilder.toString().trim();
|
||||
}
|
||||
|
||||
public boolean checkContentAwareFromThrottlingTiers() {
|
||||
// use the content aware property appended to throttling tiers
|
||||
if (!throttlingTiers.isEmpty()) {
|
||||
String throttlingTierWithContentAware = throttlingTiers.get(0);
|
||||
if (throttlingTierWithContentAware != null &&
|
||||
throttlingTierWithContentAware.contains(PolicyConstants.THROTTLING_TIER_CONTENT_AWARE_SEPERATOR)) {
|
||||
String[] splitThrottlingTiers =
|
||||
throttlingTierWithContentAware.split(PolicyConstants.THROTTLING_TIER_CONTENT_AWARE_SEPERATOR);
|
||||
return Boolean.valueOf(splitThrottlingTiers[splitThrottlingTiers.length - 1]);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public org.wso2.carbon.apimgt.api.model.Scope getScope() {
|
||||
return scope;
|
||||
}
|
||||
public List<org.wso2.carbon.apimgt.api.model.Scope> getScopes() {
|
||||
return scopes;
|
||||
}
|
||||
|
||||
public void setScope(org.wso2.carbon.apimgt.api.model.Scope scope) {
|
||||
this.scope = scope;
|
||||
}
|
||||
|
||||
public void setScopes(org.wso2.carbon.apimgt.api.model.Scope scope){
|
||||
this.scopes.add(scope);
|
||||
}
|
||||
|
||||
public String getResourceMap(){
|
||||
Map verbs = new LinkedHashMap();
|
||||
int i = 0;
|
||||
for (String method : httpVerbs) {
|
||||
Map verb = new LinkedHashMap();
|
||||
verb.put("auth_type",authTypes.get(i));
|
||||
verb.put("throttling_tier",throttlingTiers.get(i));
|
||||
//Following parameter is not required as it not need to reflect UI level. If need please enable it.
|
||||
// /verb.put("throttling_conditions", throttlingConditions.get(i));
|
||||
try{
|
||||
org.wso2.carbon.apimgt.api.model.Scope tmpScope = scopes.get(i);
|
||||
if(tmpScope != null){
|
||||
verb.put("scope",tmpScope.getKey());
|
||||
}
|
||||
}catch(IndexOutOfBoundsException e){
|
||||
//todo need to rewrite to prevent this type of exceptions
|
||||
}
|
||||
verbs.put(method,verb);
|
||||
i++;
|
||||
}
|
||||
//todo this is a hack to make key validation service stub from braking need to rewrite.
|
||||
return JSONValue.toJSONString(verbs);
|
||||
}
|
||||
|
||||
public String getApplicableLevel() {
|
||||
return applicableLevel;
|
||||
}
|
||||
|
||||
public void setApplicableLevel(String applicableLevel) {
|
||||
this.applicableLevel = applicableLevel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
return true;
|
||||
}
|
||||
if (o == null || getClass() != o.getClass()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
URITemplate that = (URITemplate) o;
|
||||
|
||||
if (!uriTemplate.equals(that.uriTemplate)) {
|
||||
return false;
|
||||
}
|
||||
if (resourceURI != null ? !resourceURI.equals(that.resourceURI) : that.resourceURI != null) {
|
||||
return false;
|
||||
}
|
||||
if (resourceSandboxURI != null ? !resourceSandboxURI.equals(that.resourceSandboxURI) : that
|
||||
.resourceSandboxURI != null) {
|
||||
return false;
|
||||
}
|
||||
if (!httpVerb.equals(that.httpVerb)) {
|
||||
return false;
|
||||
}
|
||||
if (!authType.equals(that.authType)) {
|
||||
return false;
|
||||
}
|
||||
if (!httpVerbs.equals(that.httpVerbs)) {
|
||||
return false;
|
||||
}
|
||||
if (!authTypes.equals(that.authTypes)) {
|
||||
return false;
|
||||
}
|
||||
if (throttlingConditions != null ? !throttlingConditions.equals(that.throttlingConditions) : that
|
||||
.throttlingConditions != null) {
|
||||
return false;
|
||||
}
|
||||
if (applicableLevel != null ? !applicableLevel.equals(that.applicableLevel) : that.applicableLevel != null) {
|
||||
return false;
|
||||
}
|
||||
if (!throttlingTier.equals(that.throttlingTier)) {
|
||||
return false;
|
||||
}
|
||||
if (!throttlingTiers.equals(that.throttlingTiers)) {
|
||||
return false;
|
||||
}
|
||||
if (scope != null ? !scope.equals(that.scope) : that.scope != null) {
|
||||
return false;
|
||||
}
|
||||
if (mediationScript != null ? !mediationScript.equals(that.mediationScript) : that.mediationScript != null) {
|
||||
return false;
|
||||
}
|
||||
if (scopes != null ? !scopes.equals(that.scopes) : that.scopes != null) {
|
||||
return false;
|
||||
}
|
||||
if (mediationScripts != null ? !mediationScripts.equals(that.mediationScripts) : that.mediationScripts !=
|
||||
null) {
|
||||
return false;
|
||||
}
|
||||
// Probably incorrect - comparing Object[] arrays with Arrays.equals
|
||||
return Arrays.equals(conditionGroups, that.conditionGroups);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = uriTemplate.hashCode();
|
||||
result = 31 * result + (resourceURI != null ? resourceURI.hashCode() : 0);
|
||||
result = 31 * result + (resourceSandboxURI != null ? resourceSandboxURI.hashCode() : 0);
|
||||
result = 31 * result + (httpVerb != null ? httpVerb.hashCode() : 0);
|
||||
result = 31 * result + (authType != null ? authType.hashCode() : 0);
|
||||
result = 31 * result + (httpVerbs != null ? httpVerbs.hashCode() : 0);
|
||||
result = 31 * result + (authTypes != null ? authTypes.hashCode() : 0);
|
||||
result = 31 * result + (throttlingConditions != null ? throttlingConditions.hashCode() : 0);
|
||||
result = 31 * result + (applicableLevel != null ? applicableLevel.hashCode() : 0);
|
||||
result = 31 * result + (throttlingTier != null ? throttlingTier.hashCode() : 0);
|
||||
result = 31 * result + (throttlingTiers != null ? throttlingTiers.hashCode() : 0);
|
||||
result = 31 * result + (scope != null ? scope.hashCode() : 0);
|
||||
result = 31 * result + (mediationScript != null ? mediationScript.hashCode() : 0);
|
||||
result = 31 * result + (scopes != null ? scopes.hashCode() : 0);
|
||||
result = 31 * result + (mediationScripts != null ? mediationScripts.hashCode() : 0);
|
||||
result = 31 * result + Arrays.hashCode(conditionGroups);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public List<org.wso2.carbon.apimgt.api.model.Scope> retrieveAllScopes() {
|
||||
return this.scopes;
|
||||
}
|
||||
|
||||
public void addAllScopes(List<Scope> scopes) {
|
||||
|
||||
this.scopes = scopes;
|
||||
}
|
||||
|
||||
public Set<APIProductIdentifier> retrieveUsedByProducts() {
|
||||
return usedByProducts;
|
||||
}
|
||||
|
||||
public void addUsedByProduct(APIProductIdentifier usedByProduct) {
|
||||
usedByProducts.add(usedByProduct);
|
||||
}
|
||||
|
||||
public void setAmznResourceName(String amznResourceName) {
|
||||
this.amznResourceName = amznResourceName;
|
||||
}
|
||||
|
||||
public String getAmznResourceName() {
|
||||
return amznResourceName;
|
||||
}
|
||||
|
||||
public void setAmznResourceTimeout(int amznResourceTimeout) {
|
||||
this.amznResourceTimeout = amznResourceTimeout;
|
||||
}
|
||||
|
||||
public int getAmznResourceTimeout() {
|
||||
return amznResourceTimeout;
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.common;
|
||||
|
||||
public class DepConfig {
|
||||
|
||||
private String agentPackageName;
|
||||
private String consumerKey;
|
||||
private String consumerSecret;
|
||||
private String accessToken;
|
||||
private String accessSecret;
|
||||
private String accessTokenExpiry;
|
||||
private String vppToken;
|
||||
|
||||
public String getAgentPackageName() {
|
||||
return agentPackageName;
|
||||
}
|
||||
|
||||
public void setAgentPackageName(String agentPackageName) {
|
||||
this.agentPackageName = agentPackageName;
|
||||
}
|
||||
|
||||
public String getConsumerKey() {
|
||||
return consumerKey;
|
||||
}
|
||||
|
||||
public void setConsumerKey(String consumerKey) {
|
||||
this.consumerKey = consumerKey;
|
||||
}
|
||||
|
||||
public String getConsumerSecret() {
|
||||
return consumerSecret;
|
||||
}
|
||||
|
||||
public void setConsumerSecret(String consumerSecret) {
|
||||
this.consumerSecret = consumerSecret;
|
||||
}
|
||||
|
||||
public String getAccessToken() {
|
||||
return accessToken;
|
||||
}
|
||||
|
||||
public void setAccessToken(String accessToken) {
|
||||
this.accessToken = accessToken;
|
||||
}
|
||||
|
||||
public String getVppToken() {
|
||||
return vppToken;
|
||||
}
|
||||
|
||||
public void setVppToken(String vppToken) {
|
||||
this.vppToken = vppToken;
|
||||
}
|
||||
|
||||
public String getAccessSecret() {
|
||||
return accessSecret;
|
||||
}
|
||||
|
||||
public void setAccessSecret(String accessSecret) {
|
||||
this.accessSecret = accessSecret;
|
||||
}
|
||||
|
||||
public String getAccessTokenExpiry() {
|
||||
return accessTokenExpiry;
|
||||
}
|
||||
|
||||
public void setAccessTokenExpiry(String accessTokenExpiry) {
|
||||
this.accessTokenExpiry = accessTokenExpiry;
|
||||
}
|
||||
}
|
@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class ItuneAppDTO {
|
||||
int id;
|
||||
String packageName;
|
||||
String version;
|
||||
String description;
|
||||
String title;
|
||||
String paymentMethod;
|
||||
String iconURL;
|
||||
String category;
|
||||
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
public void setCategory(String category) {
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
public String getIconURL() {
|
||||
return iconURL;
|
||||
}
|
||||
|
||||
public void setIconURL(String iconURL) {
|
||||
this.iconURL = iconURL;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getPackageName() {
|
||||
return packageName;
|
||||
}
|
||||
|
||||
public void setPackageName(String packageName) {
|
||||
this.packageName = packageName;
|
||||
}
|
||||
|
||||
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
public void setVersion(String version) {
|
||||
this.version = version;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
public void setDescription(String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public String getTitle() {
|
||||
return title;
|
||||
}
|
||||
|
||||
public void setTitle(String title) {
|
||||
this.title = title;
|
||||
}
|
||||
|
||||
public String getPaymentMethod() {
|
||||
return paymentMethod;
|
||||
}
|
||||
|
||||
public void setPaymentMethod(String paymentMethod) {
|
||||
this.paymentMethod = paymentMethod;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class ProxyResponse {
|
||||
|
||||
private int code;
|
||||
private String data;
|
||||
private String executorResponse;
|
||||
|
||||
public int getCode() { return code; }
|
||||
|
||||
public void setCode(int code) { this.code = code; }
|
||||
|
||||
public String getData() { return data; }
|
||||
|
||||
public void setData(String data) { this.data = data; }
|
||||
|
||||
public String getExecutorResponse() { return executorResponse; }
|
||||
|
||||
public void setExecutorResponse(String executorResponse) { this.executorResponse = executorResponse; }
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class VppAssetDTO extends VppItuneAssetDTO {
|
||||
int id;
|
||||
int appId;
|
||||
int tenantId;
|
||||
String createdTime;
|
||||
String lastUpdatedTime;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public int getAppId() {
|
||||
return appId;
|
||||
}
|
||||
|
||||
public void setAppId(int appId) {
|
||||
this.appId = appId;
|
||||
}
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
public void setTenantId(int tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public String getCreatedTime() {
|
||||
return createdTime;
|
||||
}
|
||||
|
||||
public void setCreatedTime(String createdTime) {
|
||||
this.createdTime = createdTime;
|
||||
}
|
||||
|
||||
public String getLastUpdatedTime() {
|
||||
return lastUpdatedTime;
|
||||
}
|
||||
|
||||
public void setLastUpdatedTime(String lastUpdatedTime) {
|
||||
this.lastUpdatedTime = lastUpdatedTime;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,113 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class VppAssociationDTO {
|
||||
int id;
|
||||
String adamId;
|
||||
String clientUserId;
|
||||
String pricingParam;
|
||||
String associationType;
|
||||
|
||||
int assetId;
|
||||
int clientId;
|
||||
int tenantId;
|
||||
String createdTime;
|
||||
String lastUpdatedTime;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getAdamId() {
|
||||
return adamId;
|
||||
}
|
||||
|
||||
public void setAdamId(String adamId) {
|
||||
this.adamId = adamId;
|
||||
}
|
||||
|
||||
public String getClientUserId() {
|
||||
return clientUserId;
|
||||
}
|
||||
|
||||
public void setClientUserId(String clientUserId) {
|
||||
this.clientUserId = clientUserId;
|
||||
}
|
||||
|
||||
public String getPricingParam() {
|
||||
return pricingParam;
|
||||
}
|
||||
|
||||
public void setPricingParam(String pricingParam) {
|
||||
this.pricingParam = pricingParam;
|
||||
}
|
||||
|
||||
public String getAssociationType() {
|
||||
return associationType;
|
||||
}
|
||||
|
||||
public void setAssociationType(String associationType) {
|
||||
this.associationType = associationType;
|
||||
}
|
||||
|
||||
public int getAssetId() {
|
||||
return assetId;
|
||||
}
|
||||
|
||||
public void setAssetId(int assetId) {
|
||||
this.assetId = assetId;
|
||||
}
|
||||
|
||||
public int getClientId() {
|
||||
return clientId;
|
||||
}
|
||||
|
||||
public void setClientId(int clientId) {
|
||||
this.clientId = clientId;
|
||||
}
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
public void setTenantId(int tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public String getCreatedTime() {
|
||||
return createdTime;
|
||||
}
|
||||
|
||||
public void setCreatedTime(String createdTime) {
|
||||
this.createdTime = createdTime;
|
||||
}
|
||||
|
||||
public String getLastUpdatedTime() {
|
||||
return lastUpdatedTime;
|
||||
}
|
||||
|
||||
public void setLastUpdatedTime(String lastUpdatedTime) {
|
||||
this.lastUpdatedTime = lastUpdatedTime;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the String LicenseString ); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* String AS ISString BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class VppItuneAssetDTO {
|
||||
|
||||
|
||||
String adamId;
|
||||
String assignedCount;
|
||||
String availableCount;
|
||||
String deviceAssignable;
|
||||
String pricingParam;
|
||||
String productType;
|
||||
String retiredCount;
|
||||
String revocable;
|
||||
|
||||
List<String> supportedPlatforms;
|
||||
|
||||
public List<String> getSupportedPlatforms() {
|
||||
return supportedPlatforms;
|
||||
}
|
||||
|
||||
public void setSupportedPlatforms(List<String> supportedPlatforms) {
|
||||
this.supportedPlatforms = supportedPlatforms;
|
||||
}
|
||||
|
||||
public String getAdamId() {
|
||||
return adamId;
|
||||
}
|
||||
|
||||
public void setAdamId(String adamId) {
|
||||
this.adamId = adamId;
|
||||
}
|
||||
|
||||
public String getAssignedCount() {
|
||||
return assignedCount;
|
||||
}
|
||||
|
||||
public void setAssignedCount(String assignedCount) {
|
||||
this.assignedCount = assignedCount;
|
||||
}
|
||||
|
||||
public String getAvailableCount() {
|
||||
return availableCount;
|
||||
}
|
||||
|
||||
public void setAvailableCount(String availableCount) {
|
||||
this.availableCount = availableCount;
|
||||
}
|
||||
|
||||
public String getDeviceAssignable() {
|
||||
return deviceAssignable;
|
||||
}
|
||||
|
||||
public void setDeviceAssignable(String deviceAssignable) {
|
||||
this.deviceAssignable = deviceAssignable;
|
||||
}
|
||||
|
||||
public String getPricingParam() {
|
||||
return pricingParam;
|
||||
}
|
||||
|
||||
public void setPricingParam(String pricingParam) {
|
||||
this.pricingParam = pricingParam;
|
||||
}
|
||||
|
||||
public String getProductType() {
|
||||
return productType;
|
||||
}
|
||||
|
||||
public void setProductType(String productType) {
|
||||
this.productType = productType;
|
||||
}
|
||||
|
||||
public String getRetiredCount() {
|
||||
return retiredCount;
|
||||
}
|
||||
|
||||
public void setRetiredCount(String retiredCount) {
|
||||
this.retiredCount = retiredCount;
|
||||
}
|
||||
|
||||
public String getRevocable() {
|
||||
return revocable;
|
||||
}
|
||||
|
||||
public void setRevocable(String revocable) {
|
||||
this.revocable = revocable;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class VppItuneUserDTO {
|
||||
String clientUserId;
|
||||
String inviteCode;
|
||||
String status;
|
||||
String email;
|
||||
String managedId;
|
||||
|
||||
public String getClientUserId() {
|
||||
return clientUserId;
|
||||
}
|
||||
|
||||
public void setClientUserId(String clientUserId) {
|
||||
this.clientUserId = clientUserId;
|
||||
}
|
||||
|
||||
public String getInviteCode() {
|
||||
return inviteCode;
|
||||
}
|
||||
|
||||
public void setInviteCode(String inviteCode) {
|
||||
this.inviteCode = inviteCode;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(String status) {
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getManagedId() {
|
||||
return managedId;
|
||||
}
|
||||
|
||||
public void setManagedId(String managedId) {
|
||||
this.managedId = managedId;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class VppPaginationDTO {
|
||||
|
||||
int currentPageIndex;
|
||||
int size;
|
||||
String tokenExpirationDate;
|
||||
int nextPageIndex;
|
||||
int totalPages;
|
||||
String uId;
|
||||
String versionId;
|
||||
|
||||
public int getCurrentPageIndex() {
|
||||
return currentPageIndex;
|
||||
}
|
||||
|
||||
public void setCurrentPageIndex(int currentPageIndex) {
|
||||
this.currentPageIndex = currentPageIndex;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return size;
|
||||
}
|
||||
|
||||
public void setSize(int size) {
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public String getTokenExpirationDate() {
|
||||
return tokenExpirationDate;
|
||||
}
|
||||
|
||||
public void setTokenExpirationDate(String tokenExpirationDate) {
|
||||
this.tokenExpirationDate = tokenExpirationDate;
|
||||
}
|
||||
|
||||
public int getNextPageIndex() {
|
||||
return nextPageIndex;
|
||||
}
|
||||
|
||||
public void setNextPageIndex(int nextPageIndex) {
|
||||
this.nextPageIndex = nextPageIndex;
|
||||
}
|
||||
|
||||
public int getTotalPages() {
|
||||
return totalPages;
|
||||
}
|
||||
|
||||
public void setTotalPages(int totalPages) {
|
||||
this.totalPages = totalPages;
|
||||
}
|
||||
|
||||
public String getuId() {
|
||||
return uId;
|
||||
}
|
||||
|
||||
public void setuId(String uId) {
|
||||
this.uId = uId;
|
||||
}
|
||||
|
||||
public String getVersionId() {
|
||||
return versionId;
|
||||
}
|
||||
|
||||
public void setVersionId(String versionId) {
|
||||
this.versionId = versionId;
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.dto;
|
||||
|
||||
public class VppUserDTO extends VppItuneUserDTO {
|
||||
int id;
|
||||
String dmUsername;
|
||||
int tenantId;
|
||||
String createdTime;
|
||||
String lastUpdatedTime;
|
||||
String tmpPassword;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getDmUsername() {
|
||||
return dmUsername;
|
||||
}
|
||||
|
||||
public void setDmUsername(String dmUsername) {
|
||||
this.dmUsername = dmUsername;
|
||||
}
|
||||
|
||||
public int getTenantId() {
|
||||
return tenantId;
|
||||
}
|
||||
|
||||
public void setTenantId(int tenantId) {
|
||||
this.tenantId = tenantId;
|
||||
}
|
||||
|
||||
public String getCreatedTime() {
|
||||
return createdTime;
|
||||
}
|
||||
|
||||
public void setCreatedTime(String createdTime) {
|
||||
this.createdTime = createdTime;
|
||||
}
|
||||
|
||||
public String getLastUpdatedTime() {
|
||||
return lastUpdatedTime;
|
||||
}
|
||||
|
||||
public void setLastUpdatedTime(String lastUpdatedTime) {
|
||||
this.lastUpdatedTime = lastUpdatedTime;
|
||||
}
|
||||
|
||||
public String getTmpPassword() {
|
||||
return tmpPassword;
|
||||
}
|
||||
|
||||
public void setTmpPassword(String tmpPassword) {
|
||||
this.tmpPassword = tmpPassword;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VppUserDTO{" +
|
||||
"id=" + id +
|
||||
", dmUsername='" + dmUsername + '\'' +
|
||||
", tenantId=" + tenantId +
|
||||
", createdTime='" + createdTime + '\'' +
|
||||
", lastUpdatedTime='" + lastUpdatedTime + '\'' +
|
||||
", tmpPassword='" + tmpPassword + '\'' +
|
||||
", clientUserId='" + clientUserId + '\'' +
|
||||
", inviteCode='" + inviteCode + '\'' +
|
||||
", status='" + status + '\'' +
|
||||
", email='" + email + '\'' +
|
||||
", managedId='" + managedId + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.common.services;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
public interface VPPApplicationManager {
|
||||
|
||||
VppUserDTO addUser(VppUserDTO userDTO) throws ApplicationManagementException;
|
||||
|
||||
VppUserDTO getUserByDMUsername(String emmUsername) throws ApplicationManagementException;
|
||||
|
||||
void updateUser(VppUserDTO userDTO) throws ApplicationManagementException;
|
||||
|
||||
void syncUsers(String clientId) throws ApplicationManagementException;
|
||||
|
||||
void syncAssets(int nextPageIndex) throws ApplicationManagementException;
|
||||
|
||||
VppAssetDTO getAssetByAppId(int appId) throws ApplicationManagementException;
|
||||
|
||||
ProxyResponse callVPPBackend(String url, String payload, String accessToken, String method) throws IOException;
|
||||
|
||||
boolean addAssociation(VppAssetDTO asset, List<VppUserDTO> vppUsers) throws
|
||||
ApplicationManagementException;
|
||||
|
||||
VppAssociationDTO getAssociation(int assetId, int userId) throws ApplicationManagementException;
|
||||
|
||||
VppAssociationDTO getUserAssociation(String adamId, String emmUsername) throws ApplicationManagementException;
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.wrapper;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class VppAssociateRequestWrapper {
|
||||
|
||||
List<VppItuneAssetDTO> assets;
|
||||
List<String> clientUserIds;
|
||||
|
||||
public List<VppItuneAssetDTO> getAssets() {
|
||||
return assets;
|
||||
}
|
||||
|
||||
public void setAssets(List<VppItuneAssetDTO> assets) {
|
||||
this.assets = assets;
|
||||
}
|
||||
|
||||
public List<String> getClientUserIds() {
|
||||
return clientUserIds;
|
||||
}
|
||||
|
||||
public void setClientUserIds(List<String> clientUserIds) {
|
||||
this.clientUserIds = clientUserIds;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.wrapper;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppPaginationDTO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class VppItuneAssetResponseWrapper extends VppPaginationDTO {
|
||||
|
||||
List<VppAssetDTO> assets;
|
||||
|
||||
public List<VppAssetDTO> getAssets() {
|
||||
return assets;
|
||||
}
|
||||
|
||||
public void setAssets(List<VppAssetDTO> assets) {
|
||||
this.assets = assets;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.wrapper;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class VppItuneUserRequestWrapper {
|
||||
|
||||
List<VppItuneUserDTO> users;
|
||||
|
||||
public VppItuneUserRequestWrapper() {
|
||||
users = new ArrayList<>();
|
||||
}
|
||||
public List<VppItuneUserDTO> getUser() {
|
||||
return users;
|
||||
}
|
||||
|
||||
public void setUser(List<VppItuneUserDTO> users) {
|
||||
this.users = users;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package io.entgra.device.mgt.core.application.mgt.common.wrapper;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppPaginationDTO;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class VppItuneUserResponseWrapper extends VppPaginationDTO {
|
||||
|
||||
List<VppItuneUserDTO> users;
|
||||
|
||||
public VppItuneUserResponseWrapper() {
|
||||
users = new ArrayList<>();
|
||||
}
|
||||
public List<VppItuneUserDTO> getUser() {
|
||||
return users;
|
||||
}
|
||||
|
||||
public void setUser(List<VppItuneUserDTO> users) {
|
||||
this.users = users;
|
||||
}
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.dao;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
|
||||
|
||||
public interface VppApplicationDAO {
|
||||
|
||||
int addVppUser(VppUserDTO userDTO, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
VppUserDTO updateVppUser(VppUserDTO userDTO, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
VppUserDTO getUserByDMUsername(String emmUsername, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
VppAssetDTO getAssetByAppId(int appId, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
int addAsset(VppAssetDTO vppAssetDTO, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
VppAssetDTO updateAsset(VppAssetDTO vppAssetDTO, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
VppAssociationDTO getAssociation(int assetId, int userId, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
int addAssociation(VppAssociationDTO vppAssociationDTO, int tenantId) throws ApplicationManagementDAOException;
|
||||
|
||||
VppAssociationDTO updateAssociation(VppAssociationDTO vppAssociationDTO, int tenantId) throws ApplicationManagementDAOException;
|
||||
}
|
@ -0,0 +1,508 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.dao.impl.vpp;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.VppApplicationDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.impl.AbstractDAOImpl;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.UnexpectedServerErrorException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.DAOUtil;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.List;
|
||||
|
||||
public class GenericVppApplicationDAOImpl extends AbstractDAOImpl implements VppApplicationDAO {
|
||||
private static final Log log = LogFactory.getLog(GenericVppApplicationDAOImpl.class);
|
||||
|
||||
@Override
|
||||
public int addVppUser(VppUserDTO userDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
int vppUserId = -1;
|
||||
String sql = "INSERT INTO "
|
||||
+ "AP_VPP_USER("
|
||||
+ "CLIENT_USER_ID, "
|
||||
+ "DM_USERNAME, "
|
||||
+ "TENANT_ID, "
|
||||
+ "EMAIL, "
|
||||
+ "INVITE_CODE, "
|
||||
+ "STATUS,"
|
||||
+ "CREATED_TIME,"
|
||||
+ "LAST_UPDATED_TIME,"
|
||||
+ "MANAGED_ID,"
|
||||
+ "TEMP_PASSWORD) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
stmt.setString(1, userDTO.getClientUserId());
|
||||
stmt.setString(2, userDTO.getDmUsername());
|
||||
stmt.setInt(3, tenantId);
|
||||
stmt.setString(4, userDTO.getEmail());
|
||||
stmt.setString(5, userDTO.getInviteCode());
|
||||
stmt.setString(6, userDTO.getStatus());
|
||||
stmt.setLong(7, currentTime);
|
||||
stmt.setLong(8, currentTime);
|
||||
stmt.setString(9, userDTO.getManagedId());
|
||||
stmt.setString(10, userDTO.getTmpPassword());
|
||||
stmt.executeUpdate();
|
||||
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
||||
if (rs.next()) {
|
||||
vppUserId = rs.getInt(1);
|
||||
}
|
||||
}
|
||||
return vppUserId;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when adding the vpp user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to add the vpp user.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppUserDTO updateVppUser(VppUserDTO userDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
|
||||
String sql = "UPDATE AP_VPP_USER SET ";
|
||||
if (userDTO.getClientUserId() != null && !userDTO.getClientUserId().isEmpty()) {
|
||||
sql += "CLIENT_USER_ID = ?,";
|
||||
}
|
||||
if (userDTO.getDmUsername() != null && !userDTO.getDmUsername().isEmpty()) {
|
||||
sql += "DM_USERNAME = ?,";
|
||||
}
|
||||
if (userDTO.getEmail() != null && !userDTO.getEmail().isEmpty()) {
|
||||
sql += "EMAIL = ?,";
|
||||
}
|
||||
if (userDTO.getInviteCode() != null && !userDTO.getInviteCode().isEmpty()) {
|
||||
sql += "INVITE_CODE = ?,";
|
||||
}
|
||||
if (userDTO.getStatus() != null && !userDTO.getStatus().isEmpty()) {
|
||||
sql += "STATUS = ?,";
|
||||
}
|
||||
if (userDTO.getManagedId() != null && !userDTO.getManagedId().isEmpty()) {
|
||||
sql += "MANAGED_ID = ?,";
|
||||
}
|
||||
if (userDTO.getTmpPassword() != null && !userDTO.getTmpPassword().isEmpty()) {
|
||||
sql += "TEMP_PASSWORD = ?,";
|
||||
}
|
||||
|
||||
sql += " TENANT_ID = ?, LAST_UPDATED_TIME = ? WHERE ID = ?";
|
||||
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
long updatedTime = System.currentTimeMillis();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
int x = 0;
|
||||
|
||||
if (userDTO.getClientUserId() != null && !userDTO.getClientUserId().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getClientUserId());
|
||||
}
|
||||
if (userDTO.getDmUsername() != null && !userDTO.getDmUsername().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getDmUsername());
|
||||
}
|
||||
if (userDTO.getEmail() != null && !userDTO.getEmail().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getEmail());
|
||||
}
|
||||
if (userDTO.getInviteCode() != null && !userDTO.getInviteCode().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getInviteCode());
|
||||
}
|
||||
if (userDTO.getStatus() != null && !userDTO.getStatus().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getStatus());
|
||||
}
|
||||
if (userDTO.getManagedId() != null && !userDTO.getManagedId().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getManagedId());
|
||||
}
|
||||
if (userDTO.getTmpPassword() != null && !userDTO.getTmpPassword().isEmpty()) {
|
||||
stmt.setString(++x, userDTO.getTmpPassword());
|
||||
}
|
||||
stmt.setInt(++x, tenantId);
|
||||
stmt.setLong(++x, updatedTime);
|
||||
stmt.setInt(++x, userDTO.getId());
|
||||
if (stmt.executeUpdate() == 1) {
|
||||
return userDTO;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when updating the vpp user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to updating the vpp user.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppUserDTO getUserByDMUsername(String emmUsername, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
String sql = "SELECT "
|
||||
+ "ID, "
|
||||
+ "CLIENT_USER_ID, "
|
||||
+ "TENANT_ID, "
|
||||
+ "EMAIL, "
|
||||
+ "INVITE_CODE, "
|
||||
+ "STATUS, "
|
||||
+ "CREATED_TIME, "
|
||||
+ "LAST_UPDATED_TIME, "
|
||||
+ "MANAGED_ID, "
|
||||
+ "TEMP_PASSWORD, "
|
||||
+ "DM_USERNAME "
|
||||
+ "FROM AP_VPP_USER "
|
||||
+ "WHERE DM_USERNAME = ? AND TENANT_ID = ?";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setString(1, emmUsername);
|
||||
stmt.setInt(2, tenantId);
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
return DAOUtil.loadVppUser(rs);
|
||||
}
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when retrieving vpp user by EMM Username.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to retrieve vpp user by EMM Username.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (UnexpectedServerErrorException e) {
|
||||
String msg = "Found more than one user for: " + emmUsername;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppAssetDTO getAssetByAppId(int appId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
String sql = "SELECT "
|
||||
+ "ID, "
|
||||
+ "APP_ID, "
|
||||
+ "TENANT_ID, "
|
||||
+ "CREATED_TIME, "
|
||||
+ "LAST_UPDATED_TIME, "
|
||||
+ "ADAM_ID, "
|
||||
+ "ASSIGNED_COUNT, "
|
||||
+ "DEVICE_ASSIGNABLE, "
|
||||
+ "PRICING_PARAMS, "
|
||||
+ "PRODUCT_TYPE, "
|
||||
+ "RETIRED_COUNT, "
|
||||
+ "REVOCABLE "
|
||||
// + "SUPPORTED_PLATFORMS "
|
||||
+ "FROM AP_ASSETS "
|
||||
+ "WHERE APP_ID = ? AND TENANT_ID = ?";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setInt(1, appId);
|
||||
stmt.setInt(2, tenantId);
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
return DAOUtil.loadAsset(rs);
|
||||
}
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when retrieving asset data of app id "+ appId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to retrieve asset by app id.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (UnexpectedServerErrorException e) {
|
||||
String msg = "Found more than one app for app id: " + appId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addAsset(VppAssetDTO vppAssetDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
int assetId = -1;
|
||||
String sql = "INSERT INTO "
|
||||
+ "AP_ASSETS("
|
||||
+ "APP_ID, "
|
||||
+ "TENANT_ID, "
|
||||
+ "CREATED_TIME,"
|
||||
+ "LAST_UPDATED_TIME,"
|
||||
+ "ADAM_ID,"
|
||||
+ "ASSIGNED_COUNT,"
|
||||
+ "DEVICE_ASSIGNABLE,"
|
||||
+ "PRICING_PARAMS,"
|
||||
+ "PRODUCT_TYPE,"
|
||||
+ "RETIRED_COUNT,"
|
||||
+ "REVOCABLE, "
|
||||
+ "SUPPORTED_PLATFORMS) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
stmt.setInt(1, vppAssetDTO.getAppId());
|
||||
stmt.setInt(2, tenantId);
|
||||
stmt.setLong(3, currentTime);
|
||||
stmt.setLong(4, currentTime);
|
||||
stmt.setString(5, vppAssetDTO.getAdamId());
|
||||
stmt.setString(6, vppAssetDTO.getAssignedCount());
|
||||
stmt.setString(7, vppAssetDTO.getDeviceAssignable());
|
||||
stmt.setString(8, vppAssetDTO.getPricingParam());
|
||||
stmt.setString(9, vppAssetDTO.getProductType());
|
||||
stmt.setString(10, vppAssetDTO.getRetiredCount());
|
||||
stmt.setString(11, vppAssetDTO.getRevocable());
|
||||
List<String> platformList = vppAssetDTO.getSupportedPlatforms();
|
||||
String platformString = String.join(",", platformList);
|
||||
stmt.setString(12, platformString);
|
||||
stmt.executeUpdate();
|
||||
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
||||
if (rs.next()) {
|
||||
assetId = rs.getInt(1);
|
||||
}
|
||||
}
|
||||
return assetId;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when adding the asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to add the asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppAssetDTO updateAsset(VppAssetDTO vppAssetDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
|
||||
String sql = "UPDATE AP_ASSETS SET ";
|
||||
|
||||
if (vppAssetDTO.getAdamId() != null && !vppAssetDTO.getAdamId().isEmpty()) {
|
||||
sql += "ADAM_ID = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getAssignedCount() != null && !vppAssetDTO.getAssignedCount().isEmpty()) {
|
||||
sql += "ASSIGNED_COUNT = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getDeviceAssignable() != null && !vppAssetDTO.getDeviceAssignable().isEmpty()) {
|
||||
sql += "DEVICE_ASSIGNABLE = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getPricingParam() != null && !vppAssetDTO.getPricingParam().isEmpty()) {
|
||||
sql += "PRICING_PARAMS = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getProductType() != null && !vppAssetDTO.getProductType().isEmpty()) {
|
||||
sql += "PRODUCT_TYPE = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getRetiredCount() != null && !vppAssetDTO.getRetiredCount().isEmpty()) {
|
||||
sql += "RETIRED_COUNT = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getRevocable() != null && !vppAssetDTO.getRevocable().isEmpty()) {
|
||||
sql += "REVOCABLE = ?, ";
|
||||
}
|
||||
if (vppAssetDTO.getSupportedPlatforms() != null && !vppAssetDTO.getSupportedPlatforms().isEmpty()) {
|
||||
sql += "SUPPORTED_PLATFORMS = ?,";
|
||||
}
|
||||
sql += "APP_ID = ?, LAST_UPDATED_TIME = ? WHERE ID = ? AND TENANT_ID = ?";
|
||||
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
long updatedTime = System.currentTimeMillis();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
int x = 0;
|
||||
|
||||
if (vppAssetDTO.getAdamId() != null && !vppAssetDTO.getAdamId().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getAdamId());
|
||||
}
|
||||
if (vppAssetDTO.getAssignedCount() != null && !vppAssetDTO.getAssignedCount().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getAssignedCount());
|
||||
}
|
||||
if (vppAssetDTO.getDeviceAssignable() != null && !vppAssetDTO.getDeviceAssignable().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getDeviceAssignable());
|
||||
}
|
||||
if (vppAssetDTO.getPricingParam() != null && !vppAssetDTO.getPricingParam().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getPricingParam());
|
||||
}
|
||||
if (vppAssetDTO.getProductType() != null && !vppAssetDTO.getProductType().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getProductType());
|
||||
}
|
||||
if (vppAssetDTO.getRetiredCount() != null && !vppAssetDTO.getRetiredCount().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getRetiredCount());
|
||||
}
|
||||
if (vppAssetDTO.getRevocable() != null && !vppAssetDTO.getRevocable().isEmpty()) {
|
||||
stmt.setString(++x, vppAssetDTO.getRevocable());
|
||||
}
|
||||
if (vppAssetDTO.getSupportedPlatforms() != null && !vppAssetDTO.getSupportedPlatforms().isEmpty()) {
|
||||
List<String> platformList = vppAssetDTO.getSupportedPlatforms();
|
||||
String platformString = String.join(",", platformList);
|
||||
stmt.setString(++x, platformString);
|
||||
}
|
||||
|
||||
stmt.setInt(++x, vppAssetDTO.getAppId());
|
||||
stmt.setLong(++x, updatedTime);
|
||||
stmt.setInt(++x, vppAssetDTO.getId());
|
||||
stmt.setLong(++x, tenantId);
|
||||
if (stmt.executeUpdate() == 1) {
|
||||
return vppAssetDTO;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when updating the vpp user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to updating the vpp user.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppAssociationDTO getAssociation(int assetId, int userId, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
String sql = "SELECT "
|
||||
+ "ID, "
|
||||
+ "ASSOCIATION_TYPE, "
|
||||
+ "CREATED_TIME, "
|
||||
+ "LAST_UPDATED_TIME, "
|
||||
+ "PRICING_PARAMS "
|
||||
+ "FROM AP_VPP_ASSOCIATION "
|
||||
+ "WHERE ASSET_ID = ? AND USER_ID = ? AND TENANT_ID = ?";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setInt(1, assetId);
|
||||
stmt.setInt(2, userId);
|
||||
stmt.setInt(3, tenantId);
|
||||
try (ResultSet rs = stmt.executeQuery()) {
|
||||
return DAOUtil.loadAssignment(rs);
|
||||
}
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when retrieving assignment data of user with id "+ userId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to retrieve assignment by asset id and user id.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (UnexpectedServerErrorException e) {
|
||||
String msg = "Found more than one assignment for user id: " + userId + " and asset id: " + assetId;
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int addAssociation(VppAssociationDTO vppAssociationDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
int associationId = -1;
|
||||
String sql = "INSERT INTO "
|
||||
+ "AP_VPP_ASSOCIATION("
|
||||
+ "ASSET_ID, "
|
||||
+ "USER_ID, "
|
||||
+ "TENANT_ID, "
|
||||
+ "ASSOCIATION_TYPE,"
|
||||
+ "CREATED_TIME,"
|
||||
+ "LAST_UPDATED_TIME,"
|
||||
+ "PRICING_PARAMS) "
|
||||
+ "VALUES (?, ?, ?, ?, ?)";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
stmt.setInt(1, vppAssociationDTO.getAssetId());
|
||||
stmt.setInt(2, vppAssociationDTO.getClientId());
|
||||
stmt.setInt(3, tenantId);
|
||||
stmt.setString(4, vppAssociationDTO.getAssociationType());
|
||||
stmt.setLong(5, currentTime);
|
||||
stmt.setLong(6, currentTime);
|
||||
stmt.setString(7, vppAssociationDTO.getPricingParam());
|
||||
stmt.executeUpdate();
|
||||
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
||||
if (rs.next()) {
|
||||
associationId = rs.getInt(1);
|
||||
}
|
||||
}
|
||||
return associationId;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when adding the asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to add the asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppAssociationDTO updateAssociation(VppAssociationDTO vppAssociationDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
|
||||
String sql = "UPDATE "
|
||||
+ "AP_VPP_ASSOCIATION "
|
||||
+ "SET "
|
||||
+ "ASSET_ID = ?,"
|
||||
+ "USER_ID = ?, "
|
||||
+ "ASSOCIATION_TYPE = ?, "
|
||||
+ "LAST_UPDATED_TIME = ?, "
|
||||
+ "PRICING_PARAMS = ? "
|
||||
+ "WHERE ID = ? AND TENANT_ID = ?";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
long updatedTime = System.currentTimeMillis();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
|
||||
stmt.setInt(1, vppAssociationDTO.getAssetId());
|
||||
stmt.setInt(2, vppAssociationDTO.getClientId());
|
||||
stmt.setString(3, vppAssociationDTO.getAssociationType());
|
||||
stmt.setLong(4, updatedTime);
|
||||
stmt.setString(5, vppAssociationDTO.getPricingParam());
|
||||
stmt.setInt(6, vppAssociationDTO.getId());
|
||||
stmt.setLong(7, tenantId);
|
||||
if (stmt.executeUpdate() == 1) {
|
||||
return vppAssociationDTO;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when updating the vpp user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to updating the vpp user.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,82 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.dao.impl.vpp;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.sql.*;
|
||||
|
||||
public class OracleVppApplicationDAOImpl extends GenericVppApplicationDAOImpl {
|
||||
|
||||
private static final Log log = LogFactory.getLog(GenericVppApplicationDAOImpl.class);
|
||||
|
||||
@Override
|
||||
public int addVppUser(VppUserDTO userDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
int vppUserId = -1;
|
||||
String sql = "INSERT INTO "
|
||||
+ "AP_VPP_USER("
|
||||
+ "CLIENT_USER_ID, "
|
||||
+ "DM_USERNAME, "
|
||||
+ "TENANT_ID, "
|
||||
+ "EMAIL, "
|
||||
+ "INVITE_CODE, "
|
||||
+ "STATUS,"
|
||||
+ "CREATED_TIME,"
|
||||
+ "LAST_UPDATED_TIME,"
|
||||
+ "MANAGED_ID,"
|
||||
+ "TEMP_PASSWORD) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql, new String[] {"ID"})) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
stmt.setString(1, userDTO.getClientUserId());
|
||||
stmt.setString(2, userDTO.getDmUsername());
|
||||
stmt.setInt(3, tenantId);
|
||||
stmt.setString(4, userDTO.getEmail());
|
||||
stmt.setString(5, userDTO.getInviteCode());
|
||||
stmt.setString(6, userDTO.getStatus());
|
||||
stmt.setLong(7, currentTime);
|
||||
stmt.setLong(8, currentTime);
|
||||
stmt.setString(9, userDTO.getManagedId());
|
||||
stmt.setString(10, userDTO.getTmpPassword());
|
||||
stmt.executeUpdate();
|
||||
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
||||
if (rs.next()) {
|
||||
vppUserId = rs.getInt(1);
|
||||
}
|
||||
}
|
||||
return vppUserId;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when adding the vpp user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to add the vpp user.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.dao.impl.vpp;
|
||||
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import java.sql.*;
|
||||
|
||||
public class PostgreSQLVppApplicationDAO extends GenericVppApplicationDAOImpl {
|
||||
|
||||
private static final Log log = LogFactory.getLog(GenericVppApplicationDAOImpl.class);
|
||||
|
||||
public int addVppUser(VppUserDTO userDTO, int tenantId)
|
||||
throws ApplicationManagementDAOException {
|
||||
int vppUserId = -1;
|
||||
String sql = "INSERT INTO "
|
||||
+ "AP_VPP_USER("
|
||||
+ "CLIENT_USER_ID, "
|
||||
+ "DM_USERNAME, "
|
||||
+ "TENANT_ID, "
|
||||
+ "EMAIL, "
|
||||
+ "INVITE_CODE, "
|
||||
+ "STATUS,"
|
||||
+ "CREATED_TIME,"
|
||||
+ "LAST_UPDATED_TIME,"
|
||||
+ "MANAGED_ID,"
|
||||
+ "TEMP_PASSWORD) "
|
||||
+ "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try {
|
||||
Connection conn = this.getDBConnection();
|
||||
try (PreparedStatement stmt = conn.prepareStatement(sql, new String[]{"ID"})) {
|
||||
long currentTime = System.currentTimeMillis();
|
||||
stmt.setString(1, userDTO.getClientUserId());
|
||||
stmt.setString(2, userDTO.getDmUsername());
|
||||
stmt.setInt(3, tenantId);
|
||||
stmt.setString(4, userDTO.getEmail());
|
||||
stmt.setString(5, userDTO.getInviteCode());
|
||||
stmt.setString(6, userDTO.getStatus());
|
||||
stmt.setLong(7, currentTime);
|
||||
stmt.setLong(8, currentTime);
|
||||
stmt.setString(9, userDTO.getManagedId());
|
||||
stmt.setString(10, userDTO.getTmpPassword());
|
||||
stmt.executeUpdate();
|
||||
try (ResultSet rs = stmt.getGeneratedKeys()) {
|
||||
if (rs.next()) {
|
||||
vppUserId = rs.getInt(1);
|
||||
}
|
||||
}
|
||||
return vppUserId;
|
||||
}
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while obtaining database connection when adding the vpp user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
} catch (SQLException e) {
|
||||
String msg = "Error occurred when processing SQL to add the vpp user.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementDAOException(msg, e);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.dao.impl.vpp;
|
||||
|
||||
public class SQLServerVppApplicationDAOImpl extends GenericVppApplicationDAOImpl {
|
||||
}
|
@ -0,0 +1,610 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.impl;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.DepConfig;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ItuneAppDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppItuneUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.response.Application;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.ApplicationManagementException;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.DBConnectionException;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.exception.TransactionManagementException;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.services.VPPApplicationManager;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppAssociateRequestWrapper;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneAssetResponseWrapper;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserRequestWrapper;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.wrapper.VppItuneUserResponseWrapper;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.ApplicationDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.SPApplicationDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.VisibilityDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.VppApplicationDAO;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.dao.common.ApplicationManagementDAOFactory;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.exception.ApplicationManagementDAOException;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.internal.DataHolder;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.lifecycle.LifecycleStateManager;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.ApplicationManagementUtil;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.ConnectionManagerUtil;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.Constants;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.VppHttpUtil;
|
||||
import io.entgra.device.mgt.core.application.mgt.core.util.APIUtil;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.exceptions.MetadataManagementException;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.Metadata;
|
||||
import io.entgra.device.mgt.core.device.mgt.common.metadata.mgt.MetadataManagementService;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.DeviceManagementConstants;
|
||||
import io.entgra.device.mgt.core.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.http.HttpStatus;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class VppApplicationManagerImpl implements VPPApplicationManager {
|
||||
private static final String APP_API = "https://vpp.itunes.apple.com/mdm/v2";
|
||||
private static final String ASSETS = APP_API + "/assets";
|
||||
private static final String USER_CREATE = APP_API + "/users/create";
|
||||
private static final String USER_UPDATE = APP_API + "/users/update";
|
||||
private static final String USER_GET = APP_API + "/users";
|
||||
private static final String ASSIGNMENTS_POST = APP_API + "/assets/associate";
|
||||
private static final String ASSIGNMENTS_GET = APP_API + "/assignments";
|
||||
private static final String TOKEN = "";
|
||||
private static final String LOOKUP_API = "https://uclient-api.itunes.apple" +
|
||||
".com/WebObjects/MZStorePlatform.woa/wa/lookup?version=2&id=";
|
||||
private static final String LOOKUP_API_PREFIX =
|
||||
"&p=mdm-lockup&caller=MDM&platform=enterprisestore&cc=us&l=en";
|
||||
|
||||
|
||||
private static final Log log = LogFactory.getLog(VppApplicationManagerImpl.class);
|
||||
|
||||
private ApplicationDAO applicationDAO;
|
||||
private SPApplicationDAO spApplicationDAO;
|
||||
private VisibilityDAO visibilityDAO;
|
||||
private final LifecycleStateManager lifecycleStateManager;
|
||||
private VppApplicationDAO vppApplicationDAO;
|
||||
|
||||
public VppApplicationManagerImpl() {
|
||||
initDataAccessObjects();
|
||||
lifecycleStateManager = DataHolder.getInstance().getLifecycleStateManager();
|
||||
}
|
||||
|
||||
private void initDataAccessObjects() {
|
||||
this.applicationDAO = ApplicationManagementDAOFactory.getApplicationDAO();
|
||||
this.visibilityDAO = ApplicationManagementDAOFactory.getVisibilityDAO();
|
||||
this.spApplicationDAO = ApplicationManagementDAOFactory.getSPApplicationDAO();
|
||||
this.vppApplicationDAO = ApplicationManagementDAOFactory.getVppApplicationDAO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppUserDTO addUser(VppUserDTO userDTO) throws ApplicationManagementException {
|
||||
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
|
||||
// Call the API to add
|
||||
try {
|
||||
VppItuneUserDTO ituneUserDTO = userDTO;
|
||||
VppItuneUserRequestWrapper wrapper = new VppItuneUserRequestWrapper();
|
||||
wrapper.getUser().add(ituneUserDTO);
|
||||
|
||||
Gson gson = new Gson();
|
||||
String userPayload = gson.toJson(wrapper);
|
||||
|
||||
ProxyResponse proxyResponse = callVPPBackend(USER_CREATE, userPayload, getVppToken(), Constants.VPP.POST);
|
||||
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.EVENT_ID)) {
|
||||
// Create user does not return any useful data. Its needed to call the backend again
|
||||
ProxyResponse getUserResponse = callVPPBackend(USER_GET + Constants.VPP.CLIENT_USER_ID_PARAM +
|
||||
userDTO.getClientUserId(), userPayload, getVppToken(), Constants.VPP.GET);
|
||||
if ((getUserResponse.getCode() == HttpStatus.SC_OK || getUserResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && getUserResponse.getData().contains(Constants.VPP.TOTAL_PAGES)) {
|
||||
VppItuneUserResponseWrapper vppItuneUserResponseWrapper = gson.fromJson
|
||||
(getUserResponse.getData(), VppItuneUserResponseWrapper.class);
|
||||
userDTO.setInviteCode(vppItuneUserResponseWrapper.getUser().get(0)
|
||||
.getInviteCode());
|
||||
userDTO.setStatus(vppItuneUserResponseWrapper.getUser().get(0).getStatus());
|
||||
log.error("userDTO " + userDTO.toString());
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
int id = vppApplicationDAO.addVppUser(userDTO, tenantId);
|
||||
if (id != -1) {
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
userDTO.setId(id);
|
||||
userDTO.setTenantId(PrivilegedCarbonContext
|
||||
.getThreadLocalCarbonContext().getTenantId());
|
||||
return userDTO;
|
||||
}
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
return null;
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while adding the Vpp User.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while executing database transaction for adding Vpp User.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection for adding Vpp User.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} catch (IOException e) {
|
||||
String msg = "Error while calling VPP backend to add user";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppUserDTO getUserByDMUsername(String emmUsername) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return vppApplicationDAO.getUserByDMUsername(emmUsername, tenantId);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "DB Connection error occurs while getting vpp User data related to EMM user " + emmUsername + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
String msg = "Error occurred while getting vpp User data related to EMM user " + emmUsername + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateUser(VppUserDTO userDTO) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
VppItuneUserDTO ituneUserDTO = userDTO;
|
||||
VppItuneUserRequestWrapper wrapper = new VppItuneUserRequestWrapper();
|
||||
wrapper.getUser().add(ituneUserDTO);
|
||||
|
||||
Gson gson = new Gson();
|
||||
String userPayload = gson.toJson(wrapper);
|
||||
try {
|
||||
ProxyResponse proxyResponse = callVPPBackend(USER_UPDATE, userPayload, getVppToken(), Constants.VPP.POST);
|
||||
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.EVENT_ID)) {
|
||||
VppUserDTO currentUserDTO = getUserByDMUsername(userDTO.getDmUsername());
|
||||
if (currentUserDTO != null) {
|
||||
userDTO.setId(currentUserDTO.getId());
|
||||
}
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
if (vppApplicationDAO.updateVppUser(userDTO, tenantId) == null) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Unable to update the Vpp user " +userDTO.getId();
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
}
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while updating the Vpp User.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while executing database transaction for Vpp User update.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection for Vpp User update.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
String msg = "Error while calling VPP backend to update";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncUsers(String clientId) throws ApplicationManagementException {
|
||||
ProxyResponse proxyResponse = null;
|
||||
try {
|
||||
proxyResponse = callVPPBackend(USER_GET, null, getVppToken(), Constants
|
||||
.VPP.GET);
|
||||
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.TOTAL_PAGES)) {
|
||||
log.error("proxyResponse " + proxyResponse.getData());
|
||||
Gson gson = new Gson();
|
||||
VppItuneUserResponseWrapper vppUserResponseWrapper = gson.fromJson
|
||||
(proxyResponse.getData(), VppItuneUserResponseWrapper.class);
|
||||
// TODO: to implement later
|
||||
}
|
||||
} catch (IOException e) {
|
||||
String msg = "Error while syncing VPP users with backend";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void syncAssets(int nextPageIndex) throws ApplicationManagementException {
|
||||
ProxyResponse proxyResponse = null;
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
try {
|
||||
String url = ASSETS;
|
||||
if (nextPageIndex > 0) { // Not the first page
|
||||
url += "?pageIndex=" + nextPageIndex;
|
||||
}
|
||||
proxyResponse = callVPPBackend(url, null, getVppToken(), Constants.VPP.GET);
|
||||
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.TOTAL_PAGES)) {
|
||||
Gson gson = new Gson();
|
||||
VppItuneAssetResponseWrapper vppItuneAssetResponse = gson.fromJson
|
||||
(proxyResponse.getData(), VppItuneAssetResponseWrapper.class);
|
||||
if (vppItuneAssetResponse.getSize() > 0) {
|
||||
for (VppAssetDTO vppAssetDTO : vppItuneAssetResponse.getAssets()) {
|
||||
vppAssetDTO.setTenantId(PrivilegedCarbonContext
|
||||
.getThreadLocalCarbonContext().getTenantId());
|
||||
vppAssetDTO.setCreatedTime(String.valueOf(System.currentTimeMillis()));
|
||||
vppAssetDTO.setLastUpdatedTime(String.valueOf(System.currentTimeMillis()));
|
||||
}
|
||||
|
||||
for (VppAssetDTO vppAssetDTO : vppItuneAssetResponse.getAssets()) {
|
||||
ItuneAppDTO ituneAppDTO = lookupAsset(vppAssetDTO.getAdamId());
|
||||
ApplicationManagementUtil.persistApp(ituneAppDTO);
|
||||
List<Application> applications = ApplicationManagementUtil.getAppDetails(vppAssetDTO.getAdamId());
|
||||
for (Application application :applications) {
|
||||
VppAssetDTO vppAssetDTOs = getAssetByAppId(application.getId());
|
||||
if (vppAssetDTOs == null) {
|
||||
vppAssetDTOs = new VppAssetDTO();
|
||||
vppAssetDTO.setAppId(application.getId());
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
if (vppApplicationDAO.addAsset(vppAssetDTO, tenantId) != -1) {
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
}
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while adding the Asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while executing database transaction for adding Asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection for adding Asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
} else {
|
||||
vppAssetDTOs.setAppId(application.getId());
|
||||
vppAssetDTOs.setSupportedPlatforms(vppAssetDTO.getSupportedPlatforms());
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
if (vppApplicationDAO.updateAsset(vppAssetDTOs, tenantId) == null) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Unable to update the asset: " +vppAssetDTOs.getAdamId();
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
}
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while updating the Asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while executing database transaction for Asset update.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection for Asset update.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vppItuneAssetResponse.getCurrentPageIndex() == (vppItuneAssetResponse
|
||||
.getTotalPages() - 1)) {
|
||||
return;
|
||||
} else {
|
||||
syncAssets(vppItuneAssetResponse.getNextPageIndex());
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
String msg = "Error while syncing VPP users with backend";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
private ItuneAppDTO lookupAsset(String packageName) throws ApplicationManagementException {
|
||||
String lookupURL = LOOKUP_API + packageName + LOOKUP_API_PREFIX;
|
||||
try {
|
||||
ProxyResponse proxyResponse = callVPPBackend(lookupURL, null, getVppToken(), Constants.VPP.GET);
|
||||
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.GET_APP_DATA_RESPONSE_START)) {
|
||||
String responseData = proxyResponse.getData();
|
||||
JsonObject responseJson = new JsonParser().parse(responseData)
|
||||
.getAsJsonObject();
|
||||
|
||||
JsonObject results = responseJson.getAsJsonObject(Constants.ApplicationProperties.RESULTS);
|
||||
JsonObject result = results.getAsJsonObject(packageName);
|
||||
|
||||
String iconUrl = result.getAsJsonObject(Constants.ApplicationProperties.ARTWORK)
|
||||
.get(Constants.ApplicationProperties.URL).getAsString();
|
||||
int lastSlashIndex = iconUrl.lastIndexOf("/");
|
||||
if (lastSlashIndex != -1) {
|
||||
iconUrl = iconUrl.substring(0, lastSlashIndex + 1) + Constants.VPP.REMOTE_FILE_NAME;
|
||||
}
|
||||
|
||||
String descriptionStandard = result.getAsJsonObject(Constants.ApplicationProperties.DESCRIPTION)
|
||||
.get(Constants.ApplicationProperties.STANDARD).getAsString();
|
||||
if (descriptionStandard != null && !descriptionStandard.isEmpty()) {
|
||||
descriptionStandard = descriptionStandard.substring(0, 199);
|
||||
}
|
||||
String name = result.get(Constants.ApplicationProperties.NAME).getAsString();
|
||||
double price = result.getAsJsonArray(Constants.ApplicationProperties.OFFERS).get(0)
|
||||
.getAsJsonObject().get(Constants.ApplicationProperties.PRICE).getAsDouble();
|
||||
String version = result.getAsJsonArray(Constants.ApplicationProperties.OFFERS)
|
||||
.get(0).getAsJsonObject().get(Constants.ApplicationProperties.VERSION)
|
||||
.getAsJsonObject().get(Constants.ApplicationProperties.DISPLAY).getAsString();
|
||||
|
||||
String[] genreNames = new Gson().fromJson(result.getAsJsonArray(Constants.ApplicationProperties.GENRE_NAMES),
|
||||
String[].class);
|
||||
|
||||
ItuneAppDTO ituneAppDTO = new ItuneAppDTO();
|
||||
ituneAppDTO.setPackageName(packageName);
|
||||
ituneAppDTO.setVersion(version);
|
||||
ituneAppDTO.setDescription(descriptionStandard);
|
||||
ituneAppDTO.setTitle(name);
|
||||
|
||||
if (Constants.ApplicationProperties.PRICE_ZERO.equalsIgnoreCase(String.valueOf(price))) {
|
||||
ituneAppDTO.setPaymentMethod(Constants.ApplicationProperties.FREE_SUB_METHOD);
|
||||
} else {
|
||||
ituneAppDTO.setPaymentMethod(Constants.ApplicationProperties.PAID_SUB_METHOD);
|
||||
}
|
||||
ituneAppDTO.setIconURL(iconUrl);
|
||||
ituneAppDTO.setCategory(genreNames[0]);
|
||||
|
||||
return ituneAppDTO;
|
||||
}
|
||||
} catch (IOException e) {
|
||||
String msg = "Error while looking up the app details";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppAssetDTO getAssetByAppId(int appId) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return vppApplicationDAO.getAssetByAppId(appId, tenantId);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "DB Connection error occurs while getting asset related to app with app id " + appId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
String msg = "Error occurred while getting asset data related to app with app id " + appId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addAssociation(VppAssetDTO asset, List<VppUserDTO> vppUsers) throws
|
||||
ApplicationManagementException {
|
||||
|
||||
List<VppAssociationDTO> associations = new ArrayList<>(); // To save to UEM DBs
|
||||
List<String> clientUserIds = new ArrayList<>(); // Need this to send to vpp backend.
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
if (asset != null) {
|
||||
for (VppUserDTO vppUserDTO : vppUsers) {
|
||||
VppAssociationDTO associationDTO = VppHttpUtil.getAssociation(vppUserDTO, asset);
|
||||
associations.add(associationDTO);
|
||||
clientUserIds.add(vppUserDTO.getClientUserId());
|
||||
}
|
||||
|
||||
if (associations.size() > 0) {
|
||||
//TODO: Add or Update associations
|
||||
try {
|
||||
|
||||
// Create the VPP backend payload
|
||||
List<VppItuneAssetDTO> assets = new ArrayList<>();
|
||||
VppItuneAssetDTO assetDTO = new VppItuneAssetDTO();
|
||||
assetDTO.setAdamId(asset.getAdamId());
|
||||
assetDTO.setPricingParam(asset.getPricingParam());
|
||||
assets.add(assetDTO);
|
||||
|
||||
VppAssociateRequestWrapper vppAssociate = new VppAssociateRequestWrapper();
|
||||
vppAssociate.setAssets(assets);
|
||||
vppAssociate.setClientUserIds(clientUserIds);
|
||||
|
||||
Gson gson = new Gson();
|
||||
String payload = gson.toJson(vppAssociate);
|
||||
|
||||
ProxyResponse proxyResponse = callVPPBackend(ASSIGNMENTS_POST, payload, getVppToken(),
|
||||
Constants.VPP.POST);
|
||||
if ((proxyResponse.getCode() == HttpStatus.SC_OK || proxyResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && proxyResponse.getData().contains(Constants.VPP.EVENT_ID)) {
|
||||
// Create assignment does not return any useful data. Its needed to call the backend again
|
||||
ProxyResponse getAssignmentResponse = callVPPBackend(ASSIGNMENTS_GET, null, getVppToken(), Constants.VPP.GET);
|
||||
if ((getAssignmentResponse.getCode() == HttpStatus.SC_OK || getAssignmentResponse.getCode() ==
|
||||
HttpStatus.SC_CREATED) && getAssignmentResponse.getData().contains(Constants.VPP.TOTAL_PAGES)) {
|
||||
// VppAssociateResponseWrapper vppAssociateResponseWrapper = gson.fromJson
|
||||
// (getAssignmentResponse.getData(), VppAssociateResponseWrapper.class);
|
||||
for (VppAssociationDTO association : associations) {
|
||||
|
||||
VppAssociationDTO vppAssociation = getAssociation(association.getAssetId(), association.getClientId());
|
||||
|
||||
if (vppAssociation == null) {
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
if (vppApplicationDAO.addAssociation(association, tenantId) != -1) {
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
return true;
|
||||
}
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
return false;
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while adding the Assignment.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while executing database transaction for adding Assignment.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection for adding Assignment.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
ConnectionManagerUtil.beginDBTransaction();
|
||||
if (vppApplicationDAO.updateAssociation(association, tenantId) == null) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Unable to update the assignment: " +association.getAssetId();
|
||||
log.error(msg);
|
||||
throw new ApplicationManagementException(msg);
|
||||
}
|
||||
ConnectionManagerUtil.commitDBTransaction();
|
||||
return true;
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
ConnectionManagerUtil.rollbackDBTransaction();
|
||||
String msg = "Error occurred while updating the Asset.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (TransactionManagementException e) {
|
||||
String msg = "Error occurred while executing database transaction for Asset update.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "Error occurred while retrieving the database connection for Asset update.";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
String msg = "Error while adding associations";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public VppAssociationDTO getAssociation(int assetId, int userId) throws ApplicationManagementException {
|
||||
int tenantId = PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true);
|
||||
try {
|
||||
ConnectionManagerUtil.openDBConnection();
|
||||
return vppApplicationDAO.getAssociation(assetId, userId, tenantId);
|
||||
} catch (DBConnectionException e) {
|
||||
String msg = "DB Connection error occurs while getting assignment related to user of id " + userId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} catch (ApplicationManagementDAOException e) {
|
||||
String msg = "Error occurred while getting assignment data related to user of id " + userId + ".";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
} finally {
|
||||
ConnectionManagerUtil.closeDBConnection();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProxyResponse callVPPBackend(String url,
|
||||
String payload,
|
||||
String accessToken,
|
||||
String method) throws IOException {
|
||||
return VppHttpUtil.execute(url, payload, accessToken, method);
|
||||
}
|
||||
|
||||
public String getVppToken() throws ApplicationManagementException {
|
||||
String token = "";
|
||||
MetadataManagementService meta = APIUtil.getMetadataManager();
|
||||
Metadata metadata = null;
|
||||
try {
|
||||
metadata = meta.retrieveMetadata("DEP_META_KEY");
|
||||
if (metadata != null) {
|
||||
|
||||
Gson g = new Gson();
|
||||
DepConfig depConfigs = g.fromJson(metadata.getMetaValue(), DepConfig.class);
|
||||
token = depConfigs.getVppToken();
|
||||
return token;
|
||||
}
|
||||
}catch (MetadataManagementException e) {
|
||||
String msg = "Error when retrieving metadata of vpp feature";
|
||||
log.error(msg, e);
|
||||
throw new ApplicationManagementException(msg, e);
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
public VppAssociationDTO getUserAssociation(String adamId, String emmUsername) throws ApplicationManagementException {
|
||||
// Todo: Join the 3 tables and find a matching association
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,305 @@
|
||||
/*
|
||||
* Copyright (c) 2018 - 2023, Entgra (Pvt) Ltd. (http://www.entgra.io) All Rights Reserved.
|
||||
*
|
||||
* Entgra (Pvt) Ltd. licenses this file to you under the Apache License,
|
||||
* Version 2.0 (the "License"); you may not use this file except
|
||||
* in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package io.entgra.device.mgt.core.application.mgt.core.util;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.ProxyResponse;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssetDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppAssociationDTO;
|
||||
import io.entgra.device.mgt.core.application.mgt.common.dto.VppUserDTO;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.apache.http.Consts;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpHeaders;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.HttpStatus;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.client.methods.HttpPut;
|
||||
import org.apache.http.client.methods.HttpRequestBase;
|
||||
import org.apache.http.entity.ContentType;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.wso2.carbon.context.PrivilegedCarbonContext;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.PrintWriter;
|
||||
|
||||
public class VppHttpUtil {
|
||||
private static final Log log = LogFactory.getLog(VppHttpUtil.class);
|
||||
|
||||
public static ProxyResponse execute(String url,
|
||||
String payload,
|
||||
String accessToken,
|
||||
String method) throws IOException {
|
||||
|
||||
HttpRequestBase endpoint = null;
|
||||
if (Constants.VPP.GET.equalsIgnoreCase(method) || Constants.VPP.DELETE.equalsIgnoreCase(method)) {
|
||||
endpoint = new HttpGet(url);
|
||||
addHeaders(endpoint, accessToken);
|
||||
return VppHttpUtil.execute(endpoint);
|
||||
} else if (Constants.VPP.POST.equalsIgnoreCase(method)) {
|
||||
endpoint = new HttpPost(url);
|
||||
} else if (Constants.VPP.PUT.equalsIgnoreCase(method)) {
|
||||
endpoint = new HttpPut(url);
|
||||
}
|
||||
addHeaders(endpoint, accessToken);
|
||||
|
||||
|
||||
if (payload != null) {
|
||||
HttpEntity forwardRequestBody = new StringEntity(payload, ContentType.APPLICATION_JSON.toString(), "utf-8");
|
||||
if (Constants.VPP.POST.equalsIgnoreCase(method)) {
|
||||
((HttpPost) endpoint).setEntity(forwardRequestBody);
|
||||
} else if (Constants.VPP.PUT.equalsIgnoreCase(method)) {
|
||||
((HttpPut) endpoint).setEntity(forwardRequestBody);
|
||||
}
|
||||
|
||||
}
|
||||
if (log.isDebugEnabled()) {
|
||||
log.info("Forwarding request to " + url);
|
||||
}
|
||||
return VppHttpUtil.execute(endpoint);
|
||||
}
|
||||
|
||||
private static void addHeaders(HttpRequestBase endpoint, String accessToken) {
|
||||
endpoint.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.APPLICATION_JSON.toString());
|
||||
endpoint.setHeader(HttpHeaders.ACCEPT, ContentType.APPLICATION_JSON.toString());
|
||||
endpoint.setHeader(HttpHeaders.AUTHORIZATION, Constants.VPP.BEARER + accessToken);
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
*
|
||||
* @param httpRequest - httpMethod e.g:- HttpPost, HttpGet
|
||||
* @return response as string
|
||||
* @throws IOException IO exception returns if error occurs when executing the httpMethod
|
||||
*/
|
||||
private static ProxyResponse execute(HttpRequestBase httpRequest) throws IOException {
|
||||
try (CloseableHttpClient client = getHttpClient()) {
|
||||
HttpResponse response = client.execute(httpRequest);
|
||||
ProxyResponse proxyResponse = new ProxyResponse();
|
||||
|
||||
if (response == null) {
|
||||
log.error("Received null response for http request : " + httpRequest.getMethod() + " " + httpRequest
|
||||
.getURI().toString());
|
||||
proxyResponse.setCode(Constants.VPP.INTERNAL_ERROR_CODE);
|
||||
proxyResponse.setExecutorResponse(Constants.VPP.EXECUTOR_EXCEPTION_PREFIX + getStatusKey(
|
||||
Constants.VPP.INTERNAL_ERROR_CODE));
|
||||
return proxyResponse;
|
||||
} else {
|
||||
int statusCode = response.getStatusLine().getStatusCode();
|
||||
try (BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()))) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while ((line = rd.readLine()) != null) {
|
||||
result.append(line);
|
||||
}
|
||||
|
||||
String jsonString = result.toString();
|
||||
if (statusCode == HttpStatus.SC_OK || statusCode == HttpStatus.SC_CREATED) {
|
||||
proxyResponse.setCode(statusCode);
|
||||
proxyResponse.setData(jsonString);
|
||||
proxyResponse.setExecutorResponse("SUCCESS");
|
||||
return proxyResponse;
|
||||
} else if (statusCode == HttpStatus.SC_UNAUTHORIZED) {
|
||||
if (jsonString.contains("Access token expired") || jsonString
|
||||
.contains("Invalid input. Access token validation failed")) {
|
||||
proxyResponse.setCode(statusCode);
|
||||
proxyResponse.setExecutorResponse(Constants.VPP.TOKEN_IS_EXPIRED);
|
||||
return proxyResponse;
|
||||
} else {
|
||||
log.error(
|
||||
"Received " + statusCode + " response for http request : " + httpRequest.getMethod()
|
||||
+ " " + httpRequest.getURI().toString() + ". Error message: " + jsonString);
|
||||
proxyResponse.setCode(statusCode);
|
||||
proxyResponse.setData(jsonString);
|
||||
proxyResponse.setExecutorResponse(
|
||||
Constants.VPP.EXECUTOR_EXCEPTION_PREFIX + getStatusKey(statusCode));
|
||||
return proxyResponse;
|
||||
}
|
||||
}
|
||||
log.error("Received " + statusCode +
|
||||
" response for http request : " + httpRequest.getMethod() + " " + httpRequest.getURI()
|
||||
.toString() + ". Error message: " + jsonString);
|
||||
proxyResponse.setCode(statusCode);
|
||||
proxyResponse.setData(jsonString);
|
||||
proxyResponse
|
||||
.setExecutorResponse(Constants.VPP.EXECUTOR_EXCEPTION_PREFIX + getStatusKey(statusCode));
|
||||
return proxyResponse;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
*
|
||||
* @param statusCode Provide status code, e.g:- 400, 401, 500 etc
|
||||
* @return relative status code key for given status code.
|
||||
*/
|
||||
public static String getStatusKey(int statusCode) {
|
||||
String statusCodeKey;
|
||||
|
||||
switch (statusCode) {
|
||||
case HttpStatus.SC_INTERNAL_SERVER_ERROR:
|
||||
statusCodeKey = "internalServerError";
|
||||
break;
|
||||
case HttpStatus.SC_BAD_REQUEST:
|
||||
statusCodeKey = "badRequest";
|
||||
break;
|
||||
case HttpStatus.SC_UNAUTHORIZED:
|
||||
statusCodeKey = "unauthorized";
|
||||
break;
|
||||
case HttpStatus.SC_FORBIDDEN:
|
||||
statusCodeKey = "forbidden";
|
||||
break;
|
||||
case HttpStatus.SC_NOT_FOUND:
|
||||
statusCodeKey = "notFound";
|
||||
break;
|
||||
case HttpStatus.SC_METHOD_NOT_ALLOWED:
|
||||
statusCodeKey = "methodNotAllowed";
|
||||
break;
|
||||
case HttpStatus.SC_NOT_ACCEPTABLE:
|
||||
statusCodeKey = "notAcceptable";
|
||||
break;
|
||||
case HttpStatus.SC_UNSUPPORTED_MEDIA_TYPE:
|
||||
statusCodeKey = "unsupportedMediaType";
|
||||
break;
|
||||
default:
|
||||
statusCodeKey = "defaultPage";
|
||||
break;
|
||||
}
|
||||
return statusCodeKey;
|
||||
}
|
||||
|
||||
|
||||
/***
|
||||
* Handle error requests.
|
||||
*
|
||||
* @param resp {@link HttpServletResponse}
|
||||
* @param proxyResponse {@link ProxyResponse}
|
||||
* @throws IOException If error occurred when trying to send the error response.
|
||||
*/
|
||||
public static void handleError(HttpServletResponse resp, ProxyResponse proxyResponse) throws IOException {
|
||||
Gson gson = new Gson();
|
||||
if (proxyResponse == null) {
|
||||
proxyResponse = new ProxyResponse();
|
||||
proxyResponse.setCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
|
||||
proxyResponse.setExecutorResponse(Constants.VPP.EXECUTOR_EXCEPTION_PREFIX + VppHttpUtil
|
||||
.getStatusKey(Constants.VPP.INTERNAL_ERROR_CODE));
|
||||
}
|
||||
resp.setStatus(proxyResponse.getCode());
|
||||
resp.setContentType(ContentType.APPLICATION_JSON.getMimeType());
|
||||
resp.setCharacterEncoding(Consts.UTF_8.name());
|
||||
|
||||
proxyResponse.setExecutorResponse(null);
|
||||
try (PrintWriter writer = resp.getWriter()) {
|
||||
writer.write(gson.toJson(proxyResponse));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle error requests with custom error codes.
|
||||
*
|
||||
* @param resp {@link HttpServletResponse}
|
||||
* @param errorCode HTTP error status code
|
||||
* @throws IOException If error occurred when trying to send the error response.
|
||||
*/
|
||||
public static void handleError(HttpServletResponse resp, int errorCode)
|
||||
throws IOException {
|
||||
ProxyResponse proxyResponse = new ProxyResponse();
|
||||
proxyResponse.setCode(errorCode);
|
||||
proxyResponse.setExecutorResponse(
|
||||
Constants.VPP.EXECUTOR_EXCEPTION_PREFIX + VppHttpUtil.getStatusKey(errorCode));
|
||||
VppHttpUtil.handleError(resp, proxyResponse);
|
||||
}
|
||||
|
||||
/***
|
||||
*
|
||||
* @param resp {@link HttpServletResponse}
|
||||
* Return Success Response.
|
||||
*/
|
||||
public static void handleSuccess(HttpServletResponse resp, ProxyResponse proxyResponse) throws IOException {
|
||||
if (proxyResponse == null) {
|
||||
handleError(resp, null);
|
||||
return;
|
||||
}
|
||||
resp.setStatus(proxyResponse.getCode());
|
||||
resp.setContentType(ContentType.APPLICATION_JSON.getMimeType());
|
||||
resp.setCharacterEncoding(Consts.UTF_8.name());
|
||||
JSONObject response = new JSONObject();
|
||||
String responseData = proxyResponse.getData();
|
||||
|
||||
if (!StringUtils.isEmpty(responseData)) {
|
||||
try {
|
||||
if (responseData.startsWith("{")) {
|
||||
JSONObject responseDataJsonObj = new JSONObject(responseData);
|
||||
response.put("data", responseDataJsonObj);
|
||||
} else if (responseData.startsWith("[")) {
|
||||
JSONArray responseDataJsonArr = new JSONArray(responseData);
|
||||
response.put("data", responseDataJsonArr);
|
||||
} else {
|
||||
log.warn("Response data is not valid json string >> " + responseData);
|
||||
response.put("data", responseData);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
log.error("Response data is not passable");
|
||||
response.put("data", responseData);
|
||||
}
|
||||
}
|
||||
|
||||
try (PrintWriter writer = resp.getWriter()) {
|
||||
writer.write(response.toString());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Http client based on hostname verification.
|
||||
*
|
||||
* @return {@link CloseableHttpClient} http client
|
||||
*/
|
||||
public static CloseableHttpClient getHttpClient() {
|
||||
return HttpClients.custom().setMaxConnTotal(1).setMaxConnPerRoute(1).build();
|
||||
}
|
||||
|
||||
public static VppAssociationDTO getAssociation(VppUserDTO user, VppAssetDTO asset) {
|
||||
VppAssociationDTO associationDTO = new VppAssociationDTO();
|
||||
associationDTO.setAdamId(asset.getAdamId());
|
||||
associationDTO.setClientUserId(user.getClientUserId());
|
||||
associationDTO.setPricingParam(asset.getPricingParam());
|
||||
associationDTO.setAssociationType(Constants.ApplicationProperties.ASSOCIATION_USER);
|
||||
|
||||
associationDTO.setAssetId(asset.getId());
|
||||
associationDTO.setClientId(user.getId());
|
||||
associationDTO.setTenantId(PrivilegedCarbonContext.getThreadLocalCarbonContext()
|
||||
.getTenantId(true));
|
||||
associationDTO.setCreatedTime(String.valueOf(System.currentTimeMillis()));
|
||||
associationDTO.setLastUpdatedTime(String.valueOf(System.currentTimeMillis()));
|
||||
return associationDTO;
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue