001 package com.github.sarxos.webcam.ds.ipcam; 002 003 import java.net.URL; 004 import java.util.ArrayList; 005 import java.util.Collections; 006 import java.util.List; 007 008 import com.github.sarxos.webcam.WebcamDevice; 009 import com.github.sarxos.webcam.WebcamException; 010 011 012 /** 013 * Class used to register IP camera devices. 014 * 015 * @author Bartosz Firyn (SarXos) 016 */ 017 public class IpCamDeviceRegistry { 018 019 /** 020 * Contains IP cameras. 021 */ 022 private static final List<IpCamDevice> DEVICES = new ArrayList<IpCamDevice>(); 023 024 /** 025 * Register IP camera. 026 * 027 * @param ipcam the IP camera to be register 028 */ 029 public static void register(IpCamDevice ipcam) { 030 for (WebcamDevice d : DEVICES) { 031 String name = ipcam.getName(); 032 if (d.getName().equals(name)) { 033 throw new WebcamException(String.format("Name '%s' is already in use", name)); 034 } 035 } 036 DEVICES.add(ipcam); 037 } 038 039 public static void register(String name, URL url, IpCamMode mode) { 040 register(new IpCamDevice(name, url, mode)); 041 } 042 043 public static void register(String name, URL url, IpCamMode mode, IpCamAuth auth) { 044 register(new IpCamDevice(name, url, mode, auth)); 045 } 046 047 public static boolean isRegistered(IpCamDevice ipcam) { 048 for (IpCamDevice d : DEVICES) { 049 if (d.getName().equals(ipcam.getName())) { 050 return true; 051 } 052 } 053 return false; 054 } 055 056 public static boolean isRegistered(String name) { 057 for (IpCamDevice d : DEVICES) { 058 if (d.getName().equals(name)) { 059 return true; 060 } 061 } 062 return false; 063 } 064 065 public static boolean isRegistered(URL url) { 066 for (IpCamDevice d : DEVICES) { 067 if (d.getURL().equals(url)) { 068 return true; 069 } 070 } 071 return false; 072 } 073 074 /** 075 * Unregister IP camera. 076 * 077 * @param ipcam the IP camera to be unregister 078 */ 079 public static void unregister(IpCamDevice ipcam) { 080 DEVICES.remove(ipcam); 081 } 082 083 /** 084 * Get all registered IP cameras. 085 * 086 * @return Collection of registered IP cameras 087 */ 088 public static List<IpCamDevice> getIpCameras() { 089 return Collections.unmodifiableList(DEVICES); 090 } 091 }