protected void handleCreateFeedStatement()

in asterix-bad/src/main/java/org/apache/asterix/bad/lang/BADQueryTranslator.java [181:210]


    protected void handleCreateFeedStatement(MetadataProvider metadataProvider, Statement stmt) throws Exception {
        CreateFeedStatement cfs = (CreateFeedStatement) stmt;
        Map<String, String> feedConfig = cfs.getConfiguration();
        if (feedConfig.containsKey(BADConstants.BAD_FEED_FIELD_NAME_HOST)) {

            // check parameters
            if (!feedConfig.containsKey(BADConstants.BAD_FEED_FIELD_NAME_HOST)
                    || !feedConfig.containsKey(BADConstants.BAD_FEED_FIELD_NAME_CHANNEL)
                    || !feedConfig.containsKey(BADConstants.BAD_FEED_FIELD_NAME_PARAMETERS)
                    || !feedConfig.containsKey(BADConstants.BAD_FEED_FIELD_NAME_CHANNEL_DV)) {
                throw new AlgebricksException(
                        "A BAD feed requires the host, dataverse name, channel name, and channel parameters of the other BAD system.");
            }

            // check format and http feed
            if (!feedConfig.containsKey(ExternalDataConstants.KEY_ADAPTER_NAME)
                    || !feedConfig.get(ExternalDataConstants.KEY_ADAPTER_NAME).toLowerCase().equals("http_adapter")) {
                throw new AlgebricksException("A BAD feed needs a http adapter.");
            }
            if (!feedConfig.containsKey(ExternalDataConstants.KEY_FORMAT)
                    || !feedConfig.get(ExternalDataConstants.KEY_FORMAT).toLowerCase().equals("adm")) {
                throw new AlgebricksException("A BAD feed requires incoming data to be in ADM format.");
            }
            if (!feedConfig.containsKey(ExternalDataConstants.KEY_MODE)
                    || !feedConfig.get(ExternalDataConstants.KEY_MODE).toLowerCase().equals("ip")) {
                throw new AlgebricksException("A BAD feed requires an IP address.");
            }
        }
        super.handleCreateFeedStatement(metadataProvider, stmt);
    }