Java Code Examples for com.google.common.collect.Multimap#containsKey()

The following examples show how to use com.google.common.collect.Multimap#containsKey() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ParameterizedResolvedFeatures.java    From xtext-extras with Eclipse Public License 2.0 6 votes vote down vote up
protected void computeAllFeatures(List<JvmFeature> unfiltered, Multimap<String, AbstractResolvedOperation> processedOperations, List<JvmFeature> result) {
	for(JvmFeature feature: unfiltered) {
		if (feature instanceof JvmOperation) {
			String simpleName = feature.getSimpleName();
			if (processedOperations.containsKey(simpleName)) {
				if (parent.isOverridden((JvmOperation) feature, processedOperations.get(simpleName))) {
					continue;
				}
			}
			BottomResolvedOperation resolvedOperation = parent.createResolvedOperation((JvmOperation) feature, type);
			processedOperations.put(simpleName, resolvedOperation);
			result.add(feature);
		} else {
			result.add(feature);
		}
	}
}
 
Example 2
Source File: AnomaliesResource.java    From incubator-pinot with Apache License 2.0 6 votes vote down vote up
public static Multimap<String, String> generateFilterSetWithDimensionMap(DimensionMap dimensionMap,
    Multimap<String, String> filterSet) {

  Multimap<String, String> newFilterSet = HashMultimap.create();

  // Dimension map gives more specified dimension information than filter set (i.e., Dimension Map should be a subset
  // of filterSet), so it needs to be processed first.
  if (MapUtils.isNotEmpty(dimensionMap)) {
    for (Map.Entry<String, String> dimensionMapEntry : dimensionMap.entrySet()) {
      newFilterSet.put(dimensionMapEntry.getKey(), dimensionMapEntry.getValue());
    }
  }

  if (filterSet != null && filterSet.size() != 0) {
    for (String key : filterSet.keySet()) {
      if (!newFilterSet.containsKey(key)) {
        newFilterSet.putAll(key, filterSet.get(key));
      }
    }
  }

  return newFilterSet;
}
 
Example 3
Source File: Bug621ResolvedFeatures.java    From sarl with Apache License 2.0 6 votes vote down vote up
protected void computeAllOperations(boolean isSuperClassBranch, Multimap<String, AbstractResolvedOperation> superClassBranchOperations,
		JvmDeclaredType type, Multimap<String, AbstractResolvedOperation> processedOperations) {
	for (JvmOperation operation: type.getDeclaredOperations()) {
		boolean addToResult = true;
		if (targetVersion.isAtLeast(JavaVersion.JAVA8)) {
			addToResult = handleOverridesAndConflicts(isSuperClassBranch, operation, processedOperations, superClassBranchOperations);
		} else {
			String simpleName = operation.getSimpleName();
			if (processedOperations.containsKey(simpleName)) {
				addToResult = !isOverridden(operation, processedOperations.get(simpleName));
			}
		}
		if (addToResult) {
			BottomResolvedOperation resolvedOperation = createResolvedOperation(operation);
			processedOperations.put(operation.getSimpleName(), resolvedOperation);
			if (isSuperClassBranch) {
				superClassBranchOperations.put(operation.getSimpleName(), resolvedOperation);
			}
		}
	}
}
 
Example 4
Source File: TypeStatesAnalyser.java    From n4js with Eclipse Public License 1.0 6 votes vote down vote up
@Override
public PartialResult holdsOnGuards(Multimap<GuardType, Guard> neverHolding,
		Multimap<GuardType, Guard> alwaysHolding) {

	if (alwaysHolding.containsKey(GuardType.InState)) {
		// TODO: change from GuardType to Guard
		// Guard guard = alwaysHolding.get(GuardType.InState);
		// Collection<String> inStates = getDeclaredStates(guard.condition, ANNOTATION_INSTATE);
		// if (!inStates.isEmpty()) {
		// if (guard.asserts == HoldAssertion.AlwaysHolds) {
		// preStates.addAll(inStates);
		// }
		// if (guard.asserts == HoldAssertion.NeverHolds) {
		// preStates.clear();
		// preStates.addAll(inStates);
		// }
		// }
	}
	return PartialResult.Unclear;
}
 
Example 5
Source File: NullDereferenceAnalyser.java    From n4js with Eclipse Public License 1.0 6 votes vote down vote up
@Override
public PartialResult holdsOnGuards(Multimap<GuardType, Guard> neverHolding,
		Multimap<GuardType, Guard> alwaysHolding) {

	if (alwaysHolding.containsKey(GuardType.IsTruthy)) {
		return PartialResult.Passed;
	}
	if (neverHolding.containsKey(GuardType.IsNull) && neverHolding.containsKey(GuardType.IsUndefined)) {
		return PartialResult.Passed;
	}
	if (alwaysHolding.containsKey(GuardType.IsNull)) {
		return new NullDereferenceFailed(GuardType.IsNull);
	}
	if (alwaysHolding.containsKey(GuardType.IsUndefined)) {
		return new NullDereferenceFailed(GuardType.IsUndefined);
	}

	return PartialResult.Unclear;
}
 
Example 6
Source File: XtendValidator.java    From xtext-xtend with Eclipse Public License 2.0 6 votes vote down vote up
protected void checkDispatchNonDispatchConflict(XtendClass clazz,
		Multimap<DispatchHelper.DispatchSignature, JvmOperation> dispatchMethods) {
	if(isIgnored(DISPATCH_PLAIN_FUNCTION_NAME_CLASH)) {
		return;
	}
	Multimap<DispatchHelper.DispatchSignature, XtendFunction> nonDispatchMethods = HashMultimap.create();
	for(XtendFunction method: filter(clazz.getMembers(), XtendFunction.class)) {
		if(!method.isDispatch()) {
			nonDispatchMethods.put(new DispatchHelper.DispatchSignature(method.getName(), method.getParameters().size()), method);
		}
	}
	for (DispatchHelper.DispatchSignature dispatchSignature : dispatchMethods.keySet()) {
		if (nonDispatchMethods.containsKey(dispatchSignature)) {
			for (XtendFunction function : nonDispatchMethods.get(dispatchSignature))
				addIssue("Non-dispatch method has same name and number of parameters as dispatch method", function,
						XTEND_FUNCTION__NAME,
						DISPATCH_PLAIN_FUNCTION_NAME_CLASH);
			for (JvmOperation operation : dispatchMethods.get(dispatchSignature))
				addIssue("Dispatch method has same name and number of parameters as non-dispatch method", associations.getXtendFunction(operation),
						XTEND_FUNCTION__NAME,
						DISPATCH_PLAIN_FUNCTION_NAME_CLASH);
		}
	}
}
 
Example 7
Source File: FunctionUtils.java    From ambari-metrics with Apache License 2.0 5 votes vote down vote up
static Collection<List<Function>> findMetricFunctions(Multimap<String, List<Function>> metricFunctions,
                                                       String metricName) {
  if (metricFunctions.containsKey(metricName)) {
    return metricFunctions.get(metricName);
  }

  for (String metricNameEntry : metricFunctions.keySet()) {
    String metricRegEx = getJavaRegexFromSqlRegex(metricNameEntry);
    if (metricName.matches(metricRegEx)) {
      return metricFunctions.get(metricNameEntry);
    }
  }

  return null;
}
 
Example 8
Source File: DivisionByZeroAnalyser.java    From n4js with Eclipse Public License 1.0 5 votes vote down vote up
@Override
public PartialResult holdsOnGuards(Multimap<GuardType, Guard> neverHolding,
		Multimap<GuardType, Guard> alwaysHolding) {

	if (alwaysHolding.containsKey(GuardType.IsZero)) {
		// TODO
		// return new PartialResult.Failed(GuardType.IsZero);
	}
	if (neverHolding.containsKey(GuardType.IsZero)) {
		return PartialResult.Passed;
	}
	return PartialResult.Unclear;
}
 
Example 9
Source File: ZipEntrySourceCollectionWriter.java    From buck with Apache License 2.0 5 votes vote down vote up
private static void copyZip(
    CustomZipOutputStream out,
    Path from,
    Set<Path> seenFiles,
    Multimap<String, Integer> allowedEntries)
    throws IOException {
  try (ZipInputStream in =
      new ZipInputStream(new BufferedInputStream(Files.newInputStream(from)))) {
    int position = 0;
    for (ZipEntry entry = in.getNextEntry();
        entry != null;
        entry = in.getNextEntry(), position++) {
      if (!allowedEntries.containsKey(entry.getName())) {
        continue;
      }
      if (!allowedEntries.get(entry.getName()).contains(position)) {
        continue;
      }
      if (entry.isDirectory()) {
        seenFiles.add(Paths.get(entry.getName()));
      }
      CustomZipEntry customEntry = new CustomZipEntry(entry);
      customEntry.setFakeTime();
      out.putNextEntry(customEntry);
      ByteStreams.copy(in, out);
      out.closeEntry();
    }
  }
}
 
Example 10
Source File: ModuleDependencyValidator.java    From bundletool with Apache License 2.0 5 votes vote down vote up
private static void checkReferencedModulesExist(Multimap<String, String> moduleDependenciesMap) {
  for (String referencedModule : moduleDependenciesMap.values()) {
    if (!moduleDependenciesMap.containsKey(referencedModule)) {
      throw InvalidBundleException.builder()
          .withUserMessage(
              "Module '%s' is referenced by <uses-split> but does not exist.", referencedModule)
          .build();
    }
  }
}
 
Example 11
Source File: ManageUsers.java    From scheduling with GNU Affero General Public License v3.0 5 votes vote down vote up
private static void createAccount(PublicKey pubKey, UserInfo userInfo, String loginFilePath, String groupFilePath,
        Properties props, Multimap<String, String> groupsMap) throws ManageUsersException, KeyException {
    if (!userInfo.isLoginSet()) {
        warnWithMessage(PROVIDED_USERNAME + IS_EMPTY_SKIPPING);
        return;
    }
    if (!userInfo.isPasswordSet()) {
        warnWithMessage("Provided password for user " + userInfo.getLogin() + IS_EMPTY_SKIPPING);
        return;
    }
    if (!userInfo.isGroupSet()) {
        warnWithMessage("Provided groups for user " + userInfo.getLogin() + IS_EMPTY_SKIPPING);
        return;
    }
    if (props.containsKey(userInfo.getLogin())) {
        warnWithMessage(USER_HEADER + userInfo.getLogin() + ALREADY_EXISTS_IN_LOGIN_FILE + loginFilePath +
                        UPDATING_THIS_USER_INFORMATION);
    }
    if (groupsMap.containsKey(userInfo.getLogin())) {
        warnWithMessage(USER_HEADER + userInfo.getLogin() + ALREADY_EXISTS_IN_GROUP_FILE + groupFilePath +
                        UPDATING_THIS_USER_INFORMATION);
    }
    updateUserPassword(pubKey, userInfo.getLogin(), userInfo.getPassword(), props);
    updateUserGroups(userInfo.getLogin(), userInfo.getGroups(), groupsMap);
    System.out.println("Created user " + userInfo.getLogin());

}
 
Example 12
Source File: GroupBasedDefaultSecurityDimensionValuesProvider.java    From Analyze with Eclipse Public License 1.0 5 votes vote down vote up
/**
 * Order {@link com.i2group.disco.user.spi.DefaultSecurityDimension}s and default dimension value ids in schema order.
 */
private Collection<com.i2group.disco.user.spi.DefaultSecurityDimension> createOrderedDefaultSecurityDimension(
        SecuritySchema securitySchema, Multimap<String, String> dimensionValueIdsByDimensionId)
{
    final Collection<Dimension> schemaDimensions = securitySchema.getSecurityDimensions().getAccessSecurityPermissions();
    final Collection<com.i2group.disco.user.spi.DefaultSecurityDimension> result = new ArrayList<>();
    for (Dimension schemaDimension : schemaDimensions)
    {
        final String dimensionId = schemaDimension.getId();
        if (dimensionValueIdsByDimensionId.containsKey(dimensionId))
        {
            final Collection<String> valueIds = dimensionValueIdsByDimensionId.get(dimensionId);

            final List<DimensionValue> schemaDimensionValues = schemaDimension.getValues();
            final boolean isOrdered = schemaDimension.isOrdered();
            final Collection<String> orderedValueIds = new ArrayList<>();
            for (DimensionValue schemaDimensionValue : schemaDimensionValues)
            {
                final String schemaDimensionValueId = schemaDimensionValue.getId();
                if (valueIds.contains(schemaDimensionValueId))
                {
                    orderedValueIds.add(schemaDimensionValueId);
                }
                // Only include 1 ordered dimension value id.
                if (isOrdered == true && !orderedValueIds.isEmpty())
                {
                    break;
                }
            }

            final com.i2group.disco.user.spi.DefaultSecurityDimension defaultSecurityDimension = 
                    new com.i2group.disco.user.spi.DefaultSecurityDimension(dimensionId, orderedValueIds);
            result.add(defaultSecurityDimension);
        }
    }
    return result;
}
 
Example 13
Source File: ShardedTableTabletBalancerTest.java    From datawave with Apache License 2.0 5 votes vote down vote up
public void peturbBalance() {
    Multimap<TServerInstance,KeyExtent> serverTablets = HashMultimap.create();
    for (Entry<KeyExtent,TServerInstance> entry : tabletLocs.entrySet()) {
        serverTablets.put(entry.getValue(), entry.getKey());
    }
    
    ArrayList<TServerInstance> serversArray = new ArrayList<>(tservers);
    for (int i = 0; i < 101; i++) {
        // Find a random source server that has at least some tablets assigned to it.
        TServerInstance fromServer = serversArray.get(random.nextInt(serversArray.size()));
        while (!serverTablets.containsKey(fromServer)) {
            fromServer = serversArray.get(random.nextInt(serversArray.size()));
        }
        // Find a random destination server that's different.
        TServerInstance toServer;
        do {
            toServer = serversArray.get(random.nextInt(serversArray.size()));
        } while (fromServer.equals(toServer));
        
        ArrayList<KeyExtent> fromExtents = new ArrayList<>(serverTablets.get(fromServer));
        int migrationsToMove = random.nextInt(fromExtents.size());
        for (int j = 0; j < migrationsToMove; j++) {
            KeyExtent extent = fromExtents.get(random.nextInt(fromExtents.size()));
            fromExtents.remove(extent); // we have a local copy
            assertTrue("Couldn't remove extent " + extent + " from server " + fromServer, serverTablets.remove(fromServer, extent));
            assertTrue("Couldn't add extent " + extent + " to server " + toServer, serverTablets.put(toServer, extent));
            assertEquals("Extent " + extent + " wasn't assigned to " + fromServer, fromServer, tabletLocs.put(extent, toServer));
        }
    }
}
 
Example 14
Source File: ProxiedEntityUtils.java    From timely with Apache License 2.0 5 votes vote down vote up
public static void addProxyHeaders(Multimap<String, String> headers, X509Certificate clientCert) {
    if (clientCert != null) {
        List<String> proxiedEntitiesList = new ArrayList<>();
        if (headers.containsKey(TimelyAuthenticationToken.PROXIED_ENTITIES_HEADER)) {
            String proxiedEntities = HttpHeaderUtils.getSingleHeader(headers,
                    TimelyAuthenticationToken.PROXIED_ENTITIES_HEADER, false);
            headers.removeAll(TimelyAuthenticationToken.PROXIED_ENTITIES_HEADER);
            String[] preExistingProxiedEntities = ProxiedEntityUtils.splitProxiedDNs(proxiedEntities, false);
            if (preExistingProxiedEntities.length > 0) {
                proxiedEntitiesList.addAll(Arrays.asList(preExistingProxiedEntities));
            }
        }
        String subjectDN = DnUtils.normalizeDN(clientCert.getSubjectDN().getName());
        proxiedEntitiesList.add(subjectDN);
        String[] newProxiedEntities = new String[proxiedEntitiesList.size()];
        proxiedEntitiesList.toArray(newProxiedEntities);
        headers.put(TimelyAuthenticationToken.PROXIED_ENTITIES_HEADER,
                ProxiedEntityUtils.buildProxiedDN(newProxiedEntities));

        List<String> proxiedIssuersList = new ArrayList<>();
        if (headers.containsKey(TimelyAuthenticationToken.PROXIED_ISSUERS_HEADER)) {
            String proxiedIssuers = HttpHeaderUtils.getSingleHeader(headers,
                    TimelyAuthenticationToken.PROXIED_ISSUERS_HEADER, false);
            headers.removeAll(TimelyAuthenticationToken.PROXIED_ISSUERS_HEADER);
            String[] preExistingProxiedIssuers = ProxiedEntityUtils.splitProxiedDNs(proxiedIssuers, false);
            if (preExistingProxiedIssuers.length > 0) {
                proxiedEntitiesList.addAll(Arrays.asList(preExistingProxiedIssuers));
            }
        }
        String issuerDN = DnUtils.normalizeDN(clientCert.getIssuerDN().getName());
        proxiedIssuersList.add(issuerDN);
        String[] newProxiedIssuers = new String[proxiedIssuersList.size()];
        proxiedIssuersList.toArray(newProxiedIssuers);
        headers.put(TimelyAuthenticationToken.PROXIED_ISSUERS_HEADER,
                ProxiedEntityUtils.buildProxiedDN(newProxiedIssuers));
    }
}
 
Example 15
Source File: ASMHelper.java    From NOVA-Core with GNU Lesser General Public License v3.0 5 votes vote down vote up
public static byte[] injectMethods(String name, byte[] bytes, Multimap<String, MethodInjector> injectors) {
	if (injectors.containsKey(name)) {
		ClassNode cnode = createClassNode(bytes);

		for (MethodInjector injector : injectors.get(name)) {
			MethodNode method = findMethod(injector.method, cnode);
			if (method == null) {
				throw new RuntimeException("Method not found: " + injector.method);
			}
			Game.logger().info("Injecting into {}\n{}", injector.method, printInsnList(injector.injection));

			List<AbstractInsnNode> callNodes;
			if (injector.before) {
				callNodes = InstructionComparator.insnListFindStart(method.instructions, injector.needle);
			} else {
				callNodes = InstructionComparator.insnListFindEnd(method.instructions, injector.needle);
			}

			if (callNodes.isEmpty()) {
				throw new RuntimeException("Needle not found in Haystack: " + injector.method + "\n" + printInsnList(injector.needle));
			}

			for (AbstractInsnNode node : callNodes) {
				if (injector.before) {
					Game.logger().info("Injected before: {}", printInsn(node));
					method.instructions.insertBefore(node, cloneInsnList(injector.injection));
				} else {
					Game.logger().info("Injected after: {}+", printInsn(node));
					method.instructions.insert(node, cloneInsnList(injector.injection));
				}
			}
		}

		bytes = createBytes(cnode, ClassWriter.COMPUTE_FRAMES);
	}
	return bytes;
}
 
Example 16
Source File: BashIncludeCommandImpl.java    From BashSupport with Apache License 2.0 5 votes vote down vote up
@Override
public boolean processDeclarations(@NotNull PsiScopeProcessor processor, @NotNull ResolveState state, PsiElement lastParent, @NotNull PsiElement place) {
    boolean result = PsiScopesUtil.walkChildrenScopes(this, processor, state, lastParent, place);
    if (!result) {
        //processing is done here
        return false;
    }

    //fixme right file?
    PsiFile containingFile = getContainingFile();
    PsiFile includedFile = BashPsiUtils.findIncludedFile(this);

    Multimap<VirtualFile, PsiElement> visitedFiles = state.get(visitedIncludeFiles);
    if (visitedFiles == null) {
        visitedFiles = Multimaps.newListMultimap(Maps.newHashMap(), Lists::newLinkedList);
    }

    visitedFiles.put(containingFile.getVirtualFile(), null);

    if (includedFile != null && !visitedFiles.containsKey(includedFile.getVirtualFile())) {
        //mark the file as visited before the actual visit, otherwise we'll get a stack overflow
        visitedFiles.put(includedFile.getVirtualFile(), this);

        state = state.put(visitedIncludeFiles, visitedFiles);

        return includedFile.processDeclarations(processor, state, null, place);
    }

    return true;
}
 
Example 17
Source File: CypherInflector.java    From SciGraph with Apache License 2.0 4 votes vote down vote up
@AddCuries
@Override
public Response apply(ContainerRequestContext context) {
  logger.fine("Serving dynamic request");
  Multimap<String, Object> paramMap = MultivaluedMapUtils.merge(context.getUriInfo());
  paramMap = resolveCuries(paramMap);
  try (Transaction tx = graphDb.beginTx()) {
    long start = System.currentTimeMillis();
    start = System.currentTimeMillis();
    Result result = cypherUtil.execute((String)path.getVendorExtensions().get("x-query"), paramMap);
    logger.fine((System.currentTimeMillis() - start) + " to execute query" );
    start = System.currentTimeMillis();
    TinkerGraphUtil tgu = new TinkerGraphUtil(curieUtil);
    Graph graph = tgu.resultToGraph(result);
    tgu.setGraph(graph);
    logger.fine((System.currentTimeMillis() - start) + " to convert to graph" );
    start = System.currentTimeMillis();
    for (String key: aspectMap.keySet()) {
      if ("true".equals(getFirst(paramMap.get(key), "false"))) {
        aspectMap.get(key).invoke(graph);
      }
    }
    if (paramMap.containsKey("project")) {
      @SuppressWarnings("unchecked")
      Collection<String> projection = (Collection<String>)(Collection<?>)paramMap.get("project");
      tgu.project(projection);
    }
    ArrayPropertyTransformer.transform(graph);
    tx.success();
    Object cacheControlNode = path.getVendorExtensions().get("x-cacheControl");
    if (cacheControlNode != null) {
        try {
          CacheControl cacheControl = new ObjectMapper().readValue(cacheControlNode.toString(), CacheControl.class);
          return Response.ok(graph).cacheControl(cacheControl).build();
        }
        catch (Throwable e) {
          return Response.ok(graph).cacheControl(null).build();
        }
    }
    return Response.ok(graph).cacheControl(null).build();
  }
}
 
Example 18
Source File: UnnotifiedAnomalyFetcher.java    From incubator-pinot with Apache License 2.0 4 votes vote down vote up
/**
 * Fetch the list of un-notified anomalies, whose create time is after last notify time
 * @param current the current DateTime
 * @param alertSnapShot the snapshot of the AnomalyFeed
 * @return a list of un-notified anomalies
 */
@Override
public Collection<MergedAnomalyResultDTO> getAlertCandidates(DateTime current, AlertSnapshotDTO alertSnapShot) {
  if (!this.active) {
    LOG.warn("UnnotifiedAnomalyFetcher is not active for fetching anomalies");
    return Collections.emptyList();
  }
  if (StringUtils.isBlank(this.anomalyFetcherConfig.getAnomalySource()) ||
      this.anomalyFetcherConfig.getAnomalySourceType() == null) {
    LOG.error("No entry of {} or {} in the AnomalyFetcherConfig", ANOMALY_SOURCE_TYPE, ANOMALY_SOURCE);
    return Collections.emptyList();
  }

  Period maxAnomalyLookBack = TimeGranularity.fromString(
      this.properties.getProperty(MAXIMUM_ANOMALY_LOOK_BACK_LENGTH, DEFAULT_MAXIMUM_ANOMALY_LOOK_BACK_LENGTH)).toPeriod();

  // Fetch anomalies who are created MAXIMUM_ANOMALY_LOOK_BACK_LENGTH ago
  AnomalySource anomalySourceType = anomalyFetcherConfig.getAnomalySourceType();
  String anomalySource = anomalyFetcherConfig.getAnomalySource();
  Predicate predicate = Predicate.AND(anomalySourceType.getPredicate(anomalySource),
      Predicate.GE("createTime",
          new Timestamp(current.minus(maxAnomalyLookBack).getMillis())));
  Set<MergedAnomalyResultDTO> alertCandidates = new HashSet<>(mergedAnomalyResultDAO.findByPredicate(predicate));

  // parse snapshot to a map, getting the last notified time of given metric::dimension pair
  Multimap<String, AnomalyNotifiedStatus> snapshot = alertSnapShot.getSnapshot();
  if (snapshot.size() == 0) {
    return new ArrayList<>(alertCandidates);
  }

  // filter out alert candidates by snapshot
  Iterator<MergedAnomalyResultDTO> iterator = alertCandidates.iterator();
  while (iterator.hasNext()) {
    MergedAnomalyResultDTO mergedAnomaly = iterator.next();
    String snapshotKey = AlertSnapshotDTO.getSnapshotKey(mergedAnomaly);

    if (snapshot.containsKey(snapshotKey)) {
      // If the mergedAnomaly's create time is before last notify time, discard
      long lastNotifyTime = alertSnapShot.getLatestStatus(snapshot, snapshotKey).getLastNotifyTime();
      if (mergedAnomaly.getCreatedTime() < lastNotifyTime) {
        iterator.remove();
      }
    }
  }

  return alertCandidates;
}
 
Example 19
Source File: ContinuumAnomalyFetcher.java    From incubator-pinot with Apache License 2.0 4 votes vote down vote up
/**
 * Fetch continuum anomalies whose end time is after last notify time; that is, the anomaly continues after last alert
 * @param current current DateTime
 * @param alertSnapShot the snapshot of the AnomalyFeed
 * @return a list of continuing merged anomalies
 */
@Override
public Collection<MergedAnomalyResultDTO> getAlertCandidates(DateTime current, AlertSnapshotDTO alertSnapShot) {
  if (!this.active) {
    LOG.warn("ContinuumAnomalyFetcher is not active for fetching anomalies");
    return Collections.emptyList();
  }
  if (StringUtils.isBlank(this.anomalyFetcherConfig.getAnomalySource()) ||
      this.anomalyFetcherConfig.getAnomalySourceType() == null) {
    LOG.error("No entry of {} or {} in the AnomalyFetcherConfig", ANOMALY_SOURCE_TYPE, ANOMALY_SOURCE);
    return Collections.emptyList();
  }

  Period realertFrequency = TimeGranularity.fromString(
      this.properties.getProperty(REALERT_FREQUENCY, DEFAULT_REALERT_FREQUENCY)).toPeriod();
  long maxAnomalyRealertTimestamp = current.minus(realertFrequency).getMillis();

  long lastNotifyTime = Math.max(alertSnapShot.getLastNotifyTime(), maxAnomalyRealertTimestamp);
  AnomalySource anomalySourceType = anomalyFetcherConfig.getAnomalySourceType();
  String anomalySource = anomalyFetcherConfig.getAnomalySource();
  Predicate predicate = Predicate.AND(anomalySourceType.getPredicate(anomalySource),
      Predicate.GE("endTime", lastNotifyTime));
  Set<MergedAnomalyResultDTO> alertCandidates = new HashSet<>(mergedAnomalyResultDAO.findByPredicate(predicate));

  Multimap<String, AnomalyNotifiedStatus> snapshot = alertSnapShot.getSnapshot();
  if (snapshot.size() == 0) {
    return new ArrayList<>(alertCandidates);
  }

  // filter out alert candidates by snapshot
  Iterator<MergedAnomalyResultDTO> alertCandidatesIterator = alertCandidates.iterator();
  while (alertCandidatesIterator.hasNext()) {
    MergedAnomalyResultDTO mergedAnomaly = alertCandidatesIterator.next();
    if (mergedAnomaly.getStartTime() > alertSnapShot.getLastNotifyTime()) {
      // this anomaly start after last notify time, pass without check
      continue;
    }

    String snapshotKey = AlertSnapshotDTO.getSnapshotKey(mergedAnomaly);
    if (snapshot.containsKey(snapshotKey)){
      // If the mergedAnomaly's start time is before last notify time and
      // the last notify time of the metric-dimension isn't REALERT_FREQUENCY ahead, discard
      long metricLastNotifyTime = alertSnapShot.getLatestStatus(snapshot, snapshotKey).getLastNotifyTime();
      if (mergedAnomaly.getStartTime() < metricLastNotifyTime &&
          metricLastNotifyTime < current.minus(realertFrequency).getMillis()) {
        alertCandidatesIterator.remove();
      }
    }
  }

  return alertCandidates;
}
 
Example 20
Source File: Investor_1880.java    From Rails with GNU General Public License v2.0 4 votes vote down vote up
public boolean isConnectedToLinkedCompany() {
    Multimap<MapHex,Station> lStations;
    Multimap<MapHex,Station> iStations;
    NetworkGraph nwGraph = NetworkGraph.createMapGraph(getRoot());
    NetworkGraph companyGraph =
            NetworkGraph.createRouteGraph(nwGraph, this, true, false);
    SimpleGraph<NetworkVertex, NetworkEdge> graph =
            companyGraph.getGraph();
    Set<NetworkVertex> verticies = graph.vertexSet();



    PublicCompany_1880 linkedCompany =
            (PublicCompany_1880) ((Investor_1880) this).getLinkedCompany();

    if (linkedCompany != null) {
        NetworkGraph linkedCompanyGraph=NetworkGraph.createRouteGraph(nwGraph, linkedCompany, true, false);
        // Creating a list of stations blocked by tokens.
        // The connection between investor and Linked Company is NOT blocked by any token of any company.
        // A token that is counted as blocked can be reached by the company for which it blocks the route.
        // Based on that logic a blocking token is reachable by both actors.
        lStations = linkedCompanyGraph.getNonPassableStations();
        iStations = companyGraph.getNonPassableStations();
        //Case A) the token in Question from a linked Company is actually on the route of the Investor
        for (BaseToken token : linkedCompany.getLaidBaseTokens()) {
            Owner holder = token.getOwner();
            if (!(holder instanceof Stop)) continue;
            Stop stop = (Stop) holder;
            for (NetworkVertex vertex : verticies) {
                if (vertex.getType() == NetworkVertex.VertexType.STATION) {
                    if ((stop.getRelatedStation() == vertex.getStation())
                            && (stop.getParent() == vertex.getHex())) {
                        return true;
                    }
                }
            }
        }
        // Case B) the Blocking Token is not from the linked Company
        // so we need to check if the MapHex of a blocking station is showing up in the
        // List of non Passable Stations
         for (MapHex blockedHex:lStations.keys()) {
             if (iStations.containsKey(blockedHex)) {
                 //Make sure its not an Offboard Map Hex
                 if (blockedHex.getCurrentTile().getColour().toString() == "RED" ) continue;
                 if (blockedHex.getStopName().equals("Beijing")) continue;
                 return true;
                }
         }

    }
    return false;
}