Example usage for com.google.gwt.core.ext PropertyOracle getSelectionProperty

List of usage examples for com.google.gwt.core.ext PropertyOracle getSelectionProperty

Introduction

In this page you can find the example usage for com.google.gwt.core.ext PropertyOracle getSelectionProperty.

Prototype

SelectionProperty getSelectionProperty(TreeLogger logger, String propertyName) throws BadPropertyValueException;

Source Link

Document

Attempts to get a named deferred binding property.

Usage

From source file:com.allen_sauer.gwt.voices.crowd.rebind.GwtUserAgentProviderGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {
    TypeOracle typeOracle = context.getTypeOracle();

    JClassType userType;/*from  w w w .j  a v a  2  s. c  o  m*/
    try {
        userType = typeOracle.getType(typeName);
    } catch (NotFoundException e) {
        logger.log(TreeLogger.ERROR, "OOPS", e);
        throw new UnableToCompleteException();
    }
    String packageName = userType.getPackage().getName();
    String className = userType.getName();

    JClassType remoteService = typeOracle.findType(typeName);
    if (remoteService == null) {
        logger.log(TreeLogger.ERROR, "Unable to find metadata for type '" + typeName + "'", null);
        throw new UnableToCompleteException();
    }

    if (remoteService.isInterface() == null) {
        logger.log(TreeLogger.ERROR, remoteService.getQualifiedSourceName() + " is not an interface", null);
        throw new UnableToCompleteException();
    }
    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            className + "Impl");
    composerFactory.addImplementedInterface(remoteService.getQualifiedSourceName());

    PrintWriter pw = context.tryCreate(logger, packageName, className + "Impl");
    if (pw != null) {
        SourceWriter sw = composerFactory.createSourceWriter(context, pw);

        PropertyOracle propertyOracle = context.getPropertyOracle();
        String userAgent;
        try {
            SelectionProperty userAgentProperty = propertyOracle.getSelectionProperty(logger,
                    PROPERTY_USER_AGENT);

            // ALWAYS RETURNS 'gecko'
            userAgent = userAgentProperty.getCurrentValue();
        } catch (BadPropertyValueException e) {
            logger.log(TreeLogger.ERROR, "Unable to find value for '" + PROPERTY_USER_AGENT + "'", e);
            throw new UnableToCompleteException();
        }

        sw.println();
        sw.println("public String getGwtUserAgent() {");
        sw.indent();

        if (userAgent == null) {
            sw.println("return null;");
        } else {
            sw.println("return \"" + userAgent + "\";");
        }

        sw.outdent();
        sw.println("}\n");

        sw.commit(logger);
    }
    return composerFactory.getCreatedClassName();
}

From source file:com.cgxlib.xq.rebind.BrowserGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {
    TypeOracle oracle = context.getTypeOracle();
    PropertyOracle propOracle = context.getPropertyOracle();

    String ua = null;/*from  ww w . j av  a  2s.c  o  m*/
    try {
        ua = propOracle.getSelectionProperty(logger, "user.agent").getCurrentValue();
    } catch (BadPropertyValueException e) {
        logger.log(TreeLogger.ERROR, "Can not resolve user.agent property", e);
        throw new UnableToCompleteException();
    }

    JClassType clz = oracle.findType(typeName);
    String pName = clz.getPackage().getName();
    String cName = clz.getName() + "_" + ua;

    PrintWriter pWriter = context.tryCreate(logger, pName, cName);

    if (pWriter != null) {
        ClassSourceFileComposerFactory cFact = new ClassSourceFileComposerFactory(pName, cName);
        cFact.setSuperclass(pName + "." + clz.getName());

        SourceWriter writer = cFact.createSourceWriter(context, pWriter);

        writer.println("protected boolean isWebkit() {return " + "safari".equals(ua) + ";}");
        writer.println("protected boolean isSafari() {return " + "safari".equals(ua) + ";}");
        writer.println("protected boolean isOpera() {return " + "opera".equals(ua) + ";}");
        writer.println("protected boolean isMozilla() {return " + ua.contains("gecko") + ";}");
        writer.println("protected boolean isMsie() {return " + ua.contains("ie") + ";}");
        writer.println("protected boolean isIe6() {return " + "ie6".equals(ua) + ";}");
        writer.println("protected boolean isIe8() {return " + "ie8".equals(ua) + ";}");
        writer.println("protected boolean isIe9() {return " + "ie9".equals(ua) + ";}");
        writer.println("protected boolean isIe10() {return " + "ie10".equals(ua) + ";}");
        writer.println("protected boolean isIe11() {return " + "gecko1_8".equals(ua) + ";}");
        writer.println("public String toString() {return \"Browser:\"" + " + \" webkit=\" + webkit"
                + " + \" mozilla=\" + mozilla" + " + \" opera=\" + opera" + " + \" msie=\" + msie"
                + " + \" ie6=\" + ie6" + " + \" ie8=\" + ie8" + " + \" ie9=\" + ie9" + ";}");
        writer.commit(logger);
    }

    return pName + "." + cName;
}

From source file:com.googlecode.mgwt.ui.generator.RebindingGenerator.java

License:Apache License

private SelectionProperty getSelectionProperty(TreeLogger logger, GeneratorContext context, String propertyName)
        throws UnableToCompleteException {
    // get the property oracle
    PropertyOracle propertyOracle = context.getPropertyOracle();
    SelectionProperty property = null;/*from   w  w w. j  a va2  s  .c  o  m*/
    try {
        // get mgwt.os variable
        property = propertyOracle.getSelectionProperty(logger, propertyName);
    } catch (BadPropertyValueException e) {
        // if we can`t find it die
        logger.log(TreeLogger.ERROR, "can not resolve " + propertyName + " variable", e);
        throw new UnableToCompleteException();
    }
    return property;
}

From source file:com.googlecode.mgwt.useragent.rebind.UserAgentGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {
    TypeOracle typeOracle = context.getTypeOracle();

    JClassType userType;/*from w  w  w. j  a  v  a2s  .c  o m*/
    try {
        userType = typeOracle.getType(typeName);
    } catch (NotFoundException e) {
        logger.log(TreeLogger.ERROR, "Unable to find metadata for type: " + typeName, e);
        throw new UnableToCompleteException();
    }
    String packageName = userType.getPackage().getName();
    String className = userType.getName();
    className = className.replace('.', '_');

    if (userType.isInterface() == null) {
        logger.log(TreeLogger.ERROR, userType.getQualifiedSourceName() + " is not an interface", null);
        throw new UnableToCompleteException();
    }

    PropertyOracle propertyOracle = context.getPropertyOracle();

    String userAgentValue;
    SelectionProperty selectionProperty;
    try {
        selectionProperty = propertyOracle.getSelectionProperty(logger, PROPERTY_USER_AGENT);
        userAgentValue = selectionProperty.getCurrentValue();
    } catch (BadPropertyValueException e) {
        logger.log(TreeLogger.ERROR, "Unable to find value for '" + PROPERTY_USER_AGENT + "'", e);
        throw new UnableToCompleteException();
    }

    String userAgentValueInitialCap = userAgentValue.substring(0, 1).toUpperCase(Locale.ENGLISH)
            + userAgentValue.substring(1);
    className = className + "Impl" + userAgentValueInitialCap;

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, className);
    composerFactory.addImplementedInterface(userType.getQualifiedSourceName());

    PrintWriter pw = context.tryCreate(logger, packageName, className);
    if (pw != null) {
        SourceWriter sw = composerFactory.createSourceWriter(context, pw);

        sw.println();
        sw.println("public native String getRuntimeValue() /*-{");
        sw.indent();
        UserAgentPropertyGenerator.writeUserAgentPropertyJavaScript(sw, selectionProperty.getPossibleValues(),
                null);
        sw.outdent();
        sw.println("}-*/;");
        sw.println();

        sw.println();
        sw.println("public String getCompileTimeValue() {");
        sw.indent();
        sw.println("return \"" + userAgentValue.trim() + "\";");
        sw.outdent();
        sw.println("}");

        sw.commit(logger);
    }
    return composerFactory.getCreatedClassName();
}

From source file:de.swm.commons.mobile.generator.OsDetectionGenerator.java

License:Apache License

/**
 * {@inheritDoc}/* w  ww.  j ava  2  s.c o  m*/
 */
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {

    // get the property oracle
    PropertyOracle propertyOracle = context.getPropertyOracle();
    SelectionProperty property = null;
    try {
        // get mgwt.os variable
        property = propertyOracle.getSelectionProperty(logger, "swmmmobile.os");
    } catch (BadPropertyValueException e) {
        // if we can`t find it die
        logger.log(TreeLogger.ERROR, "can not resolve mgwt.os variable", e);
        throw new UnableToCompleteException();
    }

    JClassType classType = null;

    try {
        // get the type we are looking for
        classType = context.getTypeOracle().getType(typeName);
    } catch (NotFoundException e) {
        // if we can`t get it die
        logger.log(TreeLogger.ERROR, "can not find type: '" + typeName + "'", e);
        throw new UnableToCompleteException();
    }

    // get value of mmobile.os
    String mmobileProperty = property.getCurrentValue();
    // get the package name
    String packageName = classType.getPackage().getName();
    // build name for implementation class
    String simpleName = classType.getSimpleSourceName() + "_" + property.getCurrentValue();
    // combine package name and simple name to full qualified
    String fullName = packageName + "." + simpleName;

    ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, simpleName);
    composer.addImplementedInterface(typeName);
    composer.addImport(typeName);

    PrintWriter printWriter = context.tryCreate(logger, packageName, simpleName);

    if (printWriter == null) {
        return fullName;
    }

    // start writing the implementation
    SourceWriter writer = composer.createSourceWriter(context, printWriter);

    writer.println("public boolean isAndroid() {");
    writer.println("return isAndroidTablet() || isAndroidPhone();");
    writer.println("}");

    writer.println("public boolean isIPhone() {");
    writer.println(
            "return " + mmobileProperty.equals("iphone") + " || " + mmobileProperty.equals("retina") + ";");
    writer.println("}");

    writer.println("public boolean isIPad() {");
    writer.println("return " + mmobileProperty.equals("ipad") + ";");
    writer.println("}");

    writer.println("public boolean isIOs() {");
    writer.println("return isIPhone() || isIPad();");
    writer.println("}");

    writer.println("public boolean isDesktop() {");
    writer.println("return " + mmobileProperty.equals("desktop") + ";");
    writer.println("}");

    writer.println("public boolean isBlackBerry() {");
    writer.println("return " + mmobileProperty.equals("blackberry") + ";");
    writer.println("}");

    writer.println("public boolean isTablet() {");
    writer.println("return isDesktop() || isIPad() || isAndroidTablet();");
    writer.println("}");

    writer.println("public boolean isPhone() {");
    writer.println("return isIPhone() || isAndroidPhone() || isBlackBerry();");
    writer.println("}");

    writer.println("public boolean isAndroidTablet() {");
    writer.println("return " + mmobileProperty.equals("android_tablet") + ";");
    writer.println("}");

    writer.println("public boolean isAndroidPhone() {");
    writer.println("return " + mmobileProperty.equals("android") + ";");
    writer.println("}");

    writer.println("public boolean isRetina() {");
    writer.println("return " + mmobileProperty.equals("retina") + ";");
    writer.println("}");

    writer.commit(logger);

    return fullName;

}