/* | |
* Copyright 2015 Open Networking Laboratory | |
* | |
* Licensed 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 org.onosproject.ovsdb.rfc.utils; | |
import java.util.List; | |
import java.util.Map; | |
import java.util.Set; | |
import org.onosproject.ovsdb.rfc.message.MonitorRequest; | |
import org.onosproject.ovsdb.rfc.message.MonitorSelect; | |
import org.onosproject.ovsdb.rfc.operations.Operation; | |
import org.onosproject.ovsdb.rfc.schema.DatabaseSchema; | |
import org.onosproject.ovsdb.rfc.schema.TableSchema; | |
import com.google.common.collect.Lists; | |
import com.google.common.collect.Maps; | |
/** | |
* Params utility class. Params of the request object, refer to RFC7047's | |
* Section 4.1. | |
*/ | |
public final class ParamUtil { | |
/** | |
* Constructs a ParamUtil object. Utility classes should not have a public | |
* or default constructor, otherwise IDE will compile unsuccessfully. This | |
* class should not be instantiated. | |
*/ | |
private ParamUtil() { | |
} | |
/** | |
* Returns MonitorRequest, refer to RFC7047's Section 4.1.5. | |
* @param tableSchema entity | |
* @return MonitorRequest | |
*/ | |
private static MonitorRequest getAllColumnsMonitorRequest(TableSchema tableSchema) { | |
String tableName = tableSchema.name(); | |
Set<String> columns = tableSchema.getColumnNames(); | |
MonitorSelect select = new MonitorSelect(true, true, true, true); | |
MonitorRequest monitorRequest = new MonitorRequest(tableName, columns, select); | |
return monitorRequest; | |
} | |
/** | |
* Returns params of monitor method, refer to RFC7047's Section 4.1.5. | |
* @param monotorId json-value, refer to RFC7047's Section 4.1.5. | |
* @param dbSchema DatabaseSchema entity | |
* @return List of Object, the params of monitor request | |
*/ | |
public static List<Object> getMonitorParams(String monotorId, DatabaseSchema dbSchema) { | |
Set<String> tables = dbSchema.getTableNames(); | |
Map<String, MonitorRequest> mrMap = Maps.newHashMap(); | |
for (String tableName : tables) { | |
TableSchema tableSchema = dbSchema.getTableSchema(tableName); | |
MonitorRequest monitorRequest = getAllColumnsMonitorRequest(tableSchema); | |
mrMap.put(tableName, monitorRequest); | |
} | |
return Lists.newArrayList(dbSchema.name(), monotorId, mrMap); | |
} | |
/** | |
* Returns params of transact method, refer to RFC7047's Section 4.1.3. | |
* @param dbSchema DatabaseSchema entity | |
* @param operations operation*, refer to RFC7047's Section 4.1.3. | |
* @return List of Object, the params of transact request | |
*/ | |
public static List<Object> getTransactParams(DatabaseSchema dbSchema, List<Operation> operations) { | |
return Lists.newArrayList(dbSchema.name(), operations); | |
} | |
} |