| /******************************************************************************* |
| * Copyright (c) 2013-2020 LAAS-CNRS (www.laas.fr) |
| * 7 Colonel Roche 31077 Toulouse - France |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * Initial Contributors: |
| * Thierry Monteil : Project manager, technical co-manager |
| * Mahdi Ben Alaya : Technical co-manager |
| * Samir Medjiah : Technical co-manager |
| * Khalil Drira : Strategy expert |
| * Guillaume Garzone : Developer |
| * François Aïssaoui : Developer |
| * |
| * New contributors : |
| *******************************************************************************/ |
| package org.eclipse.om2m.binding.mqtt.util; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.om2m.commons.constants.MimeMediaType; |
| import org.eclipse.om2m.datamapping.service.DataMapperService; |
| |
| /** |
| * This class is used to store instances of {@link DataMapperService} classes. |
| * |
| */ |
| public class DataMapperRegistry { |
| |
| /** Private constructor to avoid creation */ |
| private DataMapperRegistry(){} |
| |
| /** |
| * Service registry classified by data type handled. |
| */ |
| private static Map<String, DataMapperService> serviceRegistery = new HashMap<String, DataMapperService>(); |
| |
| /** |
| * Add a new {@link DataMapperService} to the registery. |
| * @param dms the service to register |
| */ |
| public static void register(DataMapperService dms){ |
| if(dms != null && dms.getServiceDataType() != null){ |
| serviceRegistery.put(dms.getServiceDataType(), dms); |
| } |
| } |
| |
| /** |
| * Retrieve a {@link DataMapperService} from a data type. |
| * @param dataType the |
| * @return the {@link DataMapperService} that handle the data type or null if none |
| */ |
| public static DataMapperService get(String dataType){ |
| return serviceRegistery.get(dataType); |
| } |
| |
| /** |
| * Remove the {@link DataMapperService} from the registry |
| * @param dataType the data type of the service to remove |
| */ |
| public static void remove(String dataType){ |
| serviceRegistery.remove(dataType); |
| } |
| |
| /** |
| * Remove the {@link DataMapperService} from the registry |
| * @param dms the service to remove from the registry |
| */ |
| public static void remove(DataMapperService dms){ |
| remove(dms.getServiceDataType()); |
| } |
| |
| /** |
| * Retrieve the {@link DataMapperService} from the registry |
| * from the MQTT format String |
| * @param format the format of the DMS |
| * @return the DMS with the specified format or null |
| */ |
| public static DataMapperService getFromMqttFormat(String format){ |
| switch (format) { |
| case "xml": |
| return DataMapperRegistry.get(MimeMediaType.XML); |
| case "json": |
| return DataMapperRegistry.get(MimeMediaType.JSON); |
| default: |
| return null; |
| } |
| } |
| |
| } |