// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/AbstractResourceStatusProvider.java
// public abstract class AbstractResourceStatusProvider implements ResourceStatusProvider {
// 
//   protected Resource resource;
//   protected EnvironmentConfig config;
//   protected int proviterVersion = 1;
// 
//   public AbstractResourceStatusProvider(EnvironmentConfig config) {
//     this.config = config;
//   }
// }
// 
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/CoreApiServiceStatusProvider.java
// public class CoreApiServiceStatusProvider extends AbstractResourceStatusProvider {
// 
//   public CoreApiServiceStatusProvider(EnvironmentConfig config) {
//     super(config);
//   }
// 
//   @Override
//   public String getName() {
//     return null;
//   }
// 
//   @Override
//   public Status reloadStatus() {
// 
//     return StatusRandomizer.random();
//   }
// 
//   @Override
//   public Resource getResource() {
//     return new ResourceImpl("API service", "Core API service of web site");
//   }
// }
// 
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/DataBaseStatusProvider.java
// public class DataBaseStatusProvider extends AbstractResourceStatusProvider {
// 
// 
//   public DataBaseStatusProvider(EnvironmentConfig config) {
//     super(config);
//   }
// 
//   @Override
//   public String getName() {
//     return null;
//   }
// 
//   @Override
//   public Status reloadStatus() {
//     return StatusRandomizer.random();
// 
//   }
// 
//   @Override
//   public Resource getResource() {
//     return new ResourceImpl("DataBase", "Environment DataBase");
//   }
// }
// 
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/WebUIStatusProvider.java
// public class WebUIStatusProvider extends AbstractResourceStatusProvider {
// 
//   public WebUIStatusProvider(EnvironmentConfig config) {
//     super(config);
//   }
// 
//   @Override
//   public String getName() {
//     return null;
//   }
// 
//   @Override
//   public Status reloadStatus() {
//     return StatusRandomizer.random();
//   }
// 
//   @Override
//   public Resource getResource() {
//     return new ResourceImpl("WebUI", "Web Site Web UI");
//   }
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/EnvironmentConfig.java
// public interface EnvironmentConfig {
// 
//   String getEnvName();
// 
//   String getHost();
// 
//   long getTaskDelay();
// 
//   int getAppVersion();
// 
//   Set<String> getCheckResources();
// 
//   Map<String, String> getAdditionalProperties();
// 
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/MonitorStatusCollector.java
// public interface MonitorStatusCollector {
// 
//   // synchronise?
//   Set<ResourceStatus> updateStatus();
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/ResourceStatus.java
// public interface ResourceStatus {
// 
//   Resource getResource();
// 
//   void setResource(Resource resource);
// 
//   Status getStatus();
// 
//   void setStatus(Status status);
// 
//   Date getUpdated();
// 
//   void setUpdated(Date updated);
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/resource/ResourceStatusImpl.java
// public class ResourceStatusImpl implements ResourceStatus {
// 
//   private Resource resource;
//   private Status status;
//   private Date updated = new Date();
// 
// 
//   public ResourceStatusImpl(Resource resource, Status status) {
//     this.resource = resource;
//     this.status = status;
//   }
// 
//   public ResourceStatusImpl(Resource resource, Status status, Date updated) {
//     this(resource, status);
//     this.updated = updated;
//   }
// 
// 
//   @Override
//   public Resource getResource() {
//     return resource;
//   }
// 
//   @Override
//   public void setResource(Resource resource) {
//     this.resource = resource;
//   }
// 
//   @Override
//   public Status getStatus() {
//     return status;
//   }
// 
//   @Override
//   public void setStatus(Status status) {
//     this.status = status;
//   }
// 
//   @Override
//   public Date getUpdated() {
//     return updated;
//   }
// 
//   @Override
//   public void setUpdated(Date updated) {
//     this.updated = updated;
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hash(getResource(), getStatus(), getUpdated());
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (!(o instanceof ResourceStatusImpl)) return false;
//     ResourceStatusImpl that = (ResourceStatusImpl) o;
//     return Objects.equals(getResource(), that.getResource()) &&
//         getStatus() == that.getStatus() &&
//         Objects.equals(getUpdated(), that.getUpdated());
//   }
// 
//   @Override
//   public String toString() {
//     return new ToStringBuilder(this)
//         .append("resource", resource)
//         .append("status", status)
//         .append("updated", updated)
//         .toString();
//   }
// }


import org.apache.log4j.Logger;
import org.yagel.environment.monitor.test.extension.provider.AbstractResourceStatusProvider;
import org.yagel.environment.monitor.test.extension.provider.CoreApiServiceStatusProvider;
import org.yagel.environment.monitor.test.extension.provider.DataBaseStatusProvider;
import org.yagel.environment.monitor.test.extension.provider.WebUIStatusProvider;
import org.yagel.monitor.EnvironmentConfig;
import org.yagel.monitor.MonitorStatusCollector;
import org.yagel.monitor.ResourceStatus;
import org.yagel.monitor.resource.ResourceStatusImpl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
package org.yagel.environment.monitor.test.extension;




public class TestStatusCollector implements MonitorStatusCollector {

  private static final Logger log = Logger.getLogger(TestStatusCollector.class);
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/AbstractResourceStatusProvider.java
// public abstract class AbstractResourceStatusProvider implements ResourceStatusProvider {
// 
//   protected Resource resource;
//   protected EnvironmentConfig config;
//   protected int proviterVersion = 1;
// 
//   public AbstractResourceStatusProvider(EnvironmentConfig config) {
//     this.config = config;
//   }
// }
// 
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/CoreApiServiceStatusProvider.java
// public class CoreApiServiceStatusProvider extends AbstractResourceStatusProvider {
// 
//   public CoreApiServiceStatusProvider(EnvironmentConfig config) {
//     super(config);
//   }
// 
//   @Override
//   public String getName() {
//     return null;
//   }
// 
//   @Override
//   public Status reloadStatus() {
// 
//     return StatusRandomizer.random();
//   }
// 
//   @Override
//   public Resource getResource() {
//     return new ResourceImpl("API service", "Core API service of web site");
//   }
// }
// 
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/DataBaseStatusProvider.java
// public class DataBaseStatusProvider extends AbstractResourceStatusProvider {
// 
// 
//   public DataBaseStatusProvider(EnvironmentConfig config) {
//     super(config);
//   }
// 
//   @Override
//   public String getName() {
//     return null;
//   }
// 
//   @Override
//   public Status reloadStatus() {
//     return StatusRandomizer.random();
// 
//   }
// 
//   @Override
//   public Resource getResource() {
//     return new ResourceImpl("DataBase", "Environment DataBase");
//   }
// }
// 
// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/provider/WebUIStatusProvider.java
// public class WebUIStatusProvider extends AbstractResourceStatusProvider {
// 
//   public WebUIStatusProvider(EnvironmentConfig config) {
//     super(config);
//   }
// 
//   @Override
//   public String getName() {
//     return null;
//   }
// 
//   @Override
//   public Status reloadStatus() {
//     return StatusRandomizer.random();
//   }
// 
//   @Override
//   public Resource getResource() {
//     return new ResourceImpl("WebUI", "Web Site Web UI");
//   }
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/EnvironmentConfig.java
// public interface EnvironmentConfig {
// 
//   String getEnvName();
// 
//   String getHost();
// 
//   long getTaskDelay();
// 
//   int getAppVersion();
// 
//   Set<String> getCheckResources();
// 
//   Map<String, String> getAdditionalProperties();
// 
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/MonitorStatusCollector.java
// public interface MonitorStatusCollector {
// 
//   // synchronise?
//   Set<ResourceStatus> updateStatus();
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/ResourceStatus.java
// public interface ResourceStatus {
// 
//   Resource getResource();
// 
//   void setResource(Resource resource);
// 
//   Status getStatus();
// 
//   void setStatus(Status status);
// 
//   Date getUpdated();
// 
//   void setUpdated(Date updated);
// }
// 
// Path: environment.monitor.core/src/main/java/org/yagel/monitor/resource/ResourceStatusImpl.java
// public class ResourceStatusImpl implements ResourceStatus {
// 
//   private Resource resource;
//   private Status status;
//   private Date updated = new Date();
// 
// 
//   public ResourceStatusImpl(Resource resource, Status status) {
//     this.resource = resource;
//     this.status = status;
//   }
// 
//   public ResourceStatusImpl(Resource resource, Status status, Date updated) {
//     this(resource, status);
//     this.updated = updated;
//   }
// 
// 
//   @Override
//   public Resource getResource() {
//     return resource;
//   }
// 
//   @Override
//   public void setResource(Resource resource) {
//     this.resource = resource;
//   }
// 
//   @Override
//   public Status getStatus() {
//     return status;
//   }
// 
//   @Override
//   public void setStatus(Status status) {
//     this.status = status;
//   }
// 
//   @Override
//   public Date getUpdated() {
//     return updated;
//   }
// 
//   @Override
//   public void setUpdated(Date updated) {
//     this.updated = updated;
//   }
// 
//   @Override
//   public int hashCode() {
//     return Objects.hash(getResource(), getStatus(), getUpdated());
//   }
// 
//   @Override
//   public boolean equals(Object o) {
//     if (this == o) return true;
//     if (!(o instanceof ResourceStatusImpl)) return false;
//     ResourceStatusImpl that = (ResourceStatusImpl) o;
//     return Objects.equals(getResource(), that.getResource()) &&
//         getStatus() == that.getStatus() &&
//         Objects.equals(getUpdated(), that.getUpdated());
//   }
// 
//   @Override
//   public String toString() {
//     return new ToStringBuilder(this)
//         .append("resource", resource)
//         .append("status", status)
//         .append("updated", updated)
//         .toString();
//   }
// }


// Path: environment.monitor.test.extension/src/main/java/org/yagel/environment/monitor/test/extension/TestStatusCollector.java
import org.apache.log4j.Logger;
import org.yagel.environment.monitor.test.extension.provider.AbstractResourceStatusProvider;
import org.yagel.environment.monitor.test.extension.provider.CoreApiServiceStatusProvider;
import org.yagel.environment.monitor.test.extension.provider.DataBaseStatusProvider;
import org.yagel.environment.monitor.test.extension.provider.WebUIStatusProvider;
import org.yagel.monitor.EnvironmentConfig;
import org.yagel.monitor.MonitorStatusCollector;
import org.yagel.monitor.ResourceStatus;
import org.yagel.monitor.resource.ResourceStatusImpl;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

package org.yagel.environment.monitor.test.extension;




public class TestStatusCollector implements MonitorStatusCollector {

  private static final Logger log = Logger.getLogger(TestStatusCollector.class);
  private EnvironmentConfig config;