• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java ConfigurationException类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.apache.avalon.framework.configuration.ConfigurationException的典型用法代码示例。如果您正苦于以下问题:Java ConfigurationException类的具体用法?Java ConfigurationException怎么用?Java ConfigurationException使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ConfigurationException类属于org.apache.avalon.framework.configuration包,在下文中一共展示了ConfigurationException类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: initFopFactoryFromJar

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
public FopFactory initFopFactoryFromJar() throws IOException, SAXException, ConfigurationException {

        FopFactory fopFactory = FopFactory.newInstance();

        FOURIResolver uriResolver = (FOURIResolver) fopFactory.getURIResolver();

        if (context != null) {
            uriResolver.setCustomURIResolver(new CustomResolver(context));
        } else {
            uriResolver.setCustomURIResolver(new CustomResolver());
        }

        DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
        Configuration cfg = builder.build(getClass().getResourceAsStream("fop-pdf-thai.xml"));
        fopFactory.setUserConfig(cfg);

        return fopFactory;
    }
 
开发者ID:jampajeen,项目名称:fop-pdf-thai,代码行数:19,代码来源:FopPdfThai.java


示例2: PDFExportService

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
public PDFExportService(TimeService timeService, ResourceLoader rb) {
    this.timeService = timeService;
    this.rb = rb;

    transformerFactory = TransformerFactory.newInstance();
    transformerFactory.setURIResolver( new MyURIResolver(getClass().getClassLoader()) );

    try {

        URI baseDir = getClass().getClassLoader().getResource(FOP_FONTBASEDIR).toURI();
        FopFactoryBuilder builder = new FopFactoryBuilder(baseDir, new ClassPathResolver());
        InputStream userConfig = getClass().getClassLoader().getResourceAsStream(FOP_USERCONFIG);
        fopFactory = builder.setConfiguration(new DefaultConfigurationBuilder().build(userConfig)).build();

    } catch (IOException | URISyntaxException | SAXException | ConfigurationException e) {
        // We won't be able to do anything if we can't create a FopFactory so may as well get caller to handle.
        throw new RuntimeException("Failed to setup Apache FOP for calendar PDF exports.", e);
    }

}
 
开发者ID:sakaiproject,项目名称:sakai,代码行数:21,代码来源:PDFExportService.java


示例3: createFontsMatcher

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * Creates a font triplet matcher from a configuration object.
 * @param cfg the configuration object
 * @param strict true for strict configuraton error handling
 * @return the font matcher
 * @throws FOPException if an error occurs while building the matcher
 */
public static FontTriplet.Matcher createFontsMatcher(
        Configuration cfg, boolean strict) throws FOPException {
    List<FontTriplet.Matcher> matcherList = new java.util.ArrayList<FontTriplet.Matcher>();
    Configuration[] matches = cfg.getChildren("match");
    for (int i = 0; i < matches.length; i++) {
        try {
            matcherList.add(new FontFamilyRegExFontTripletMatcher(
                    matches[i].getAttribute("font-family")));
        } catch (ConfigurationException ce) {
            LogUtil.handleException(log, ce, strict);
            continue;
        }
    }
    FontTriplet.Matcher orMatcher = new OrFontTripletMatcher(
            matcherList.toArray(new FontTriplet.Matcher[matcherList.size()]));
    return orMatcher;
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:25,代码来源:FontManagerConfigurator.java


示例4: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * Configures a PDFDocumentGraphics2D instance using an Avalon Configuration object.
 * @param graphics the PDFDocumentGraphics2D instance
 * @param cfg the configuration
 * @param useComplexScriptFeatures true if complex script features enabled
 * @throws ConfigurationException if an error occurs while configuring the object
 */
public void configure(PDFDocumentGraphics2D graphics, Configuration cfg,
                      boolean useComplexScriptFeatures )
        throws ConfigurationException {
    PDFDocument pdfDoc = graphics.getPDFDocument();

    //Filter map
    pdfDoc.setFilterMap(
            PDFRendererConfigurator.buildFilterMapFromConfiguration(cfg));

    //Fonts
    try {
        FontInfo fontInfo = createFontInfo(cfg, useComplexScriptFeatures);
        graphics.setFontInfo(fontInfo);
    } catch (FOPException e) {
        throw new ConfigurationException("Error while setting up fonts", e);
    }
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:25,代码来源:PDFDocumentGraphics2DConfigurator.java


示例5: getHandlerConfig

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * Returns the configuration subtree for a specific renderer.
 * @param cfg the renderer configuration
 * @param namespace the namespace (i.e. the XMLHandler) for which the configuration should
 *                  be returned
 * @return the requested configuration subtree, null if there's no configuration
 */
private Configuration getHandlerConfig(Configuration cfg, String namespace) {
    if (cfg == null || namespace == null) {
        return null;
    }
    Configuration handlerConfig = null;

    Configuration[] children = cfg.getChildren("xml-handler");
    for (int i = 0; i < children.length; ++i) {
        try {
            if (children[i].getAttribute("namespace").equals(namespace)) {
                handlerConfig = children[i];
                break;
            }
        } catch (ConfigurationException e) {
            // silently pass over configurations without namespace
        }
    }
    if (log.isDebugEnabled()) {
        log.debug((handlerConfig == null ? "No" : "")
                + "XML handler configuration found for namespace " + namespace);
    }
    return handlerConfig;
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:31,代码来源:XMLHandlerConfigurator.java


示例6: TaskDef

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
public TaskDef(Configuration cfg) throws ConfigurationException {
    this.fo = cfg.getAttribute("fo", null);
    if (this.fo == null) {
        this.xml = cfg.getAttribute("xml");
        this.xslt = cfg.getAttribute("xslt", null);
        if (this.xslt != null) {
            TransformerFactory factory = TransformerFactory.newInstance();
            Source xsltSource = new StreamSource(new File(xslt));
            try {
                this.templates = factory.newTemplates(xsltSource);
            } catch (TransformerConfigurationException tce) {
                throw new ConfigurationException("Invalid XSLT", tce);
            }
        }
    }
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:17,代码来源:FOPTestbed.java


示例7: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/** {@inheritDoc} */
public void configure(Configuration cfg) throws ConfigurationException {
    //Module width (MUST ALWAYS BE FIRST BECAUSE QUIET ZONE MAY DEPEND ON IT)
    Length mw = new Length(cfg.getChild("module-width").getValue("0.21mm"), "mm");
    getBean().setModuleWidth(mw.getValueAsMillimeter());

    super.configure(cfg);

    //Checksum mode
    getCodabarBean().setChecksumMode(ChecksumMode.byName(
        cfg.getChild("checksum").getValue(ChecksumMode.CP_AUTO.getName())));

    //Wide factor
    getCodabarBean().setWideFactor(
        cfg.getChild("wide-factor").getValueAsFloat((float)CodabarBean.DEFAULT_WIDE_FACTOR));

    Configuration hr = cfg.getChild("human-readable", false);
    if (hr != null) {
        //Display start/stop character and checksum in hr-message or not
        getCodabarBean().setDisplayStartStop(
                hr.getChild("display-start-stop").getValueAsBoolean(
                        CodabarBean.DEFAULT_DISPLAY_START_STOP));
    }
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:25,代码来源:Codabar.java


示例8: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/** {@inheritDoc} */
public void configure(Configuration cfg) throws ConfigurationException {
    //Module width (MUST ALWAYS BE FIRST BECAUSE QUIET ZONE MAY DEPEND ON IT)
    Length mw = new Length(cfg.getChild("module-width").getValue("0.21mm"), "mm");
    getCode128Bean().setModuleWidth(mw.getValueAsMillimeter());

    super.configure(cfg);

    String codesets = cfg.getChild("codesets").getValue(null);
    if (codesets != null) {
        codesets = codesets.toUpperCase();
        int bits = 0;
        if (codesets.indexOf('A') >= 0) {
            bits |= Code128Constants.CODESET_A;
        }
        if (codesets.indexOf('B') >= 0) {
            bits |= Code128Constants.CODESET_B;
        }
        if (codesets.indexOf('C') >= 0) {
            bits |= Code128Constants.CODESET_C;
        }
        getCode128Bean().setCodeset(bits);
    }
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:25,代码来源:Code128.java


示例9: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/** {@inheritDoc} */
public void configure(Configuration cfg) throws ConfigurationException {
    Interleaved2Of5Bean bean = getInterleaved2Of5Bean();
    //Module width (MUST ALWAYS BE FIRST BECAUSE QUIET ZONE MAY DEPEND ON IT)
    Length mw = new Length(cfg.getChild("module-width")
                    .getValue(bean.getModuleWidth() + "mm"), "mm");
    bean.setModuleWidth(mw.getValueAsMillimeter());

    super.configure(cfg);

    //Checksum mode
    bean.setChecksumMode(ChecksumMode.byName(
        cfg.getChild("checksum").getValue(ChecksumMode.CP_AUTO.getName())));

    //Wide factor
    bean.setWideFactor(
        cfg.getChild("wide-factor").getValueAsFloat((float)bean.getWideFactor()));

    Configuration hr = cfg.getChild("human-readable", false);
    if (hr != null) {
        //Display checksum in hr-message or not
        bean.setDisplayChecksum(
                hr.getChild("display-checksum").getValueAsBoolean(false));
    }
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:26,代码来源:Interleaved2Of5.java


示例10: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/** {@inheritDoc} */
public void configure(Configuration cfg) throws ConfigurationException {
    super.configure(cfg);

    //Bearer bar width
    Configuration c = cfg.getChild("bearer-bar-width", false);
    if (c != null) {
        Length w = new Length(c.getValue(), "mw");
        if (w.getUnit().equalsIgnoreCase("mw")) {
            getITFBean().setBearerBarWidth(w.getValue() * getBean().getModuleWidth());
        } else {
            getITFBean().setBearerBarWidth(w.getValueAsMillimeter());
        }
    }

    //Bearer ox
    c = cfg.getChild("bearer-box", false);
    if (c != null) {
        getITFBean().setBearerBox(c.getValueAsBoolean());
    }
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:22,代码来源:ITF14.java


示例11: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * @see org.apache.avalon.framework.configuration.Configurable#configure(Configuration)
 */
public void configure(Configuration cfg) throws ConfigurationException {
    //Module width (MUST ALWAYS BE FIRST BECAUSE QUIET ZONE MAY DEPEND ON IT)
    String mws = cfg.getChild("module-width").getValue(null);
    if (mws != null) {
        Length mw = new Length(mws, "mm");
        getDataMatrixBean().setModuleWidth(mw.getValueAsMillimeter());
    }

    super.configure(cfg);

    String shape = cfg.getChild("shape").getValue(null);
    if (shape != null) {
        getDataMatrixBean().setShape(SymbolShapeHint.byName(shape));
    }

    String size;
    size = cfg.getChild("min-symbol-size").getValue(null);
    if (size != null) {
        getDataMatrixBean().setMinSize(parseSymbolSize(size));
    }
    size = cfg.getChild("max-symbol-size").getValue(null);
    if (size != null) {
        getDataMatrixBean().setMaxSize(parseSymbolSize(size));
    }
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:29,代码来源:DataMatrix.java


示例12: getValue

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * @see org.apache.avalon.framework.configuration.Configuration#getValue()
 */
public String getValue() throws ConfigurationException {
    //System.out.println(elem.getClass().getName() + " " + elem.getLocalName());
    //System.out.println(elem.hasChildNodes() + " " + elem.getChildNodes().getLength());
    //System.out.println(elem.getNodeValue());
    NodeList nodes = elem.getChildNodes();
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < nodes.getLength(); i++) {
        final Node node = nodes.item(i);
        //System.out.println(node + " " + node.getNodeType() 
        //    + " " + node.getChildNodes().getLength());
        //System.out.println(node.getNodeValue());
        if (node.getNodeType() != Node.TEXT_NODE) {
            sb.append(node.getNodeValue());
        }
    }
    return sb.toString();
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:21,代码来源:ElemWrappingConfiguration.java


示例13: getDimension

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
public Point2D getDimension(Point2D view) {
    Configuration cfg = ConfigurationUtil.buildConfiguration(this.doc);
    try {
        String msg = ConfigurationUtil.getMessage(cfg);
        msg = MessageUtil.unescapeUnicode(msg);

        int orientation = cfg.getAttributeAsInteger("orientation", 0);
        orientation = BarcodeDimension.normalizeOrientation(orientation);

        BarcodeGenerator bargen = BarcodeUtil.getInstance().
                createBarcodeGenerator(cfg);
        String expandedMsg = VariableUtil.getExpandedMessage((PageInfo)null, msg);
        BarcodeDimension bardim = bargen.calcDimensions(expandedMsg);
        float w = (float)UnitConv.mm2pt(bardim.getWidthPlusQuiet(orientation));
        float h = (float)UnitConv.mm2pt(bardim.getHeightPlusQuiet(orientation));
        return new Point2D.Float(w, h);
    } catch (ConfigurationException ce) {
        ce.printStackTrace();
    } catch (BarcodeException be) {
        be.printStackTrace();
    }
    return null;
}
 
开发者ID:thanakrit,项目名称:barcode4j,代码行数:24,代码来源:BarcodeElement.java


示例14: testCustomConfig

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
@Ignore
public void testCustomConfig() throws IOException, ConfigurationException, SAXException {
    String OUTPUT_PATH = "target/TestPdfReportOutputCustomConfig.pdf";

    Configuration fopConfig =
        new DefaultConfigurationBuilder().build("./input/fopConfigForUnitTests.xml");

    PdfReportOutput testOutput =
        new PdfReportOutput(ReportIoUtils.createOutputStreamFromPath(OUTPUT_PATH),
                            new PdfOutputFormat(PageSize.A3_PORTRAIT),
                            fopConfig);
    testOutput.open();

    // calling startreport.ftl and endreport.ftl is important for pdf
    // because the resulting xml does not have a root and a well-defined
    // namespace
    testOutput.output("startReport.ftl", new ReportProps(new PdfOutputFormat()));
    testOutput.output("paragraph.ftl", new ParagraphProps("This is a report with custom configuration"));
    testOutput.output("endReport.ftl");
    testOutput.postProcess();
    testOutput.close();

    File pdfFile = new File(OUTPUT_PATH);
    Assert.assertNotNull(pdfFile);
    Assert.assertNotNull(pdfFile.exists());
    Assert.assertTrue(pdfFile.isFile());
    Assert.assertTrue(pdfFile.length() != 0);
}
 
开发者ID:humbletrader,项目名称:katechaki,代码行数:29,代码来源:TestPdfReportOutput.java


示例15: getFontTriplet

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * Creates a new FontTriplet given a triple Configuration
 * 
 * @param tripletCfg a triplet configuration
 * @return a font triplet font key
 * @throws FOPException thrown if a FOP exception occurs
 */
private FontTriplet getFontTriplet(Configuration tripletCfg) throws FOPException {
	try {
		String name = tripletCfg.getAttribute("name");
		if (name == null) {
			LogUtil.handleError(log, "font-triplet without name", strict);
			return null;
		}

		String weightStr = tripletCfg.getAttribute("weight");
		if (weightStr == null) {
			LogUtil.handleError(log, "font-triplet without weight", strict);
			return null;
		}
		int weight = FontUtil.parseCSS2FontWeight(FontUtil.stripWhiteSpace(weightStr));

		String style = tripletCfg.getAttribute("style");
		if (style == null) {
			LogUtil.handleError(log, "font-triplet without style", strict);
			return null;
		} else {
			style = FontUtil.stripWhiteSpace(style);
		}
		return FontInfo.createFontKey(name, style, weight);
	} catch (ConfigurationException e) {
		LogUtil.handleException(log, e, strict);
	}
	return null;
}
 
开发者ID:hongliangpan,项目名称:manydesigns.cn,代码行数:36,代码来源:FontInfoConfigurator.java


示例16: configure

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
private void configure(PDFDocumentGraphics2D g2d, Configuration cfg)
            throws ConfigurationException {

    PDFDocumentGraphics2DConfigurator configurator = new PDFDocumentGraphics2DConfigurator();
    boolean useComplexScriptFeatures = false;
    configurator.configure(g2d, cfg, useComplexScriptFeatures);
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:8,代码来源:ExampleJava2D2PDF.java


示例17: getFontTriplet

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * Creates a new FontTriplet given a triple Configuration
 *
 * @param tripletCfg a triplet configuration
 * @return a font triplet font key
 * @throws FOPException thrown if a FOP exception occurs
 */
private FontTriplet getFontTriplet(Configuration tripletCfg) throws FOPException {
    try {
        String name = tripletCfg.getAttribute("name");
        if (name == null) {
            LogUtil.handleError(log, "font-triplet without name", strict);
            return null;
        }

        String weightStr = tripletCfg.getAttribute("weight");
        if (weightStr == null) {
            LogUtil.handleError(log, "font-triplet without weight", strict);
            return null;
        }
        int weight = FontUtil.parseCSS2FontWeight(FontUtil.stripWhiteSpace(weightStr));

        String style = tripletCfg.getAttribute("style");
        if (style == null) {
            LogUtil.handleError(log, "font-triplet without style", strict);
            return null;
        } else {
            style = FontUtil.stripWhiteSpace(style);
        }
        return FontInfo.createFontKey(name, style, weight);
    } catch (ConfigurationException e) {
        LogUtil.handleException(log, e, strict);
    }
    return null;
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:36,代码来源:FontInfoConfigurator.java


示例18: getConfig

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/**
 * Returns the configuration subtree for a specific renderer.
 * @param mimeType the MIME type of the renderer
 * @return the requested configuration subtree, null if there's no configuration
 */
protected Configuration getConfig(String mimeType) {
    Configuration cfg = userAgent.getFactory().getUserConfig();
    if (cfg == null) {
        if (log.isDebugEnabled()) {
            log.debug("userconfig is null");
        }
        return null;
    }

    Configuration userConfig = null;

    String type = getType();
    Configuration[] cfgs
        = cfg.getChild(type + "s").getChildren(type);
    for (int i = 0; i < cfgs.length; ++i) {
        Configuration child = cfgs[i];
        try {
            if (child.getAttribute(MIME).equals(mimeType)) {
                userConfig = child;
                break;
            }
        } catch (ConfigurationException e) {
            // silently pass over configurations without mime type
        }
    }
    log.debug((userConfig == null ? "No u" : "U")
              + "ser configuration found for MIME type " + mimeType);
    return userConfig;
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:35,代码来源:AbstractConfigurator.java


示例19: setupFontInfo

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
/** {@inheritDoc} */
@Override
public void setupFontInfo(IFDocumentHandler documentHandler, FontInfo fontInfo)
        throws FOPException {
    FontManager fontManager = userAgent.getFactory().getFontManager();
    List<AFPFontCollection> fontCollections = new ArrayList<AFPFontCollection>();

    Configuration cfg = super.getRendererConfig(documentHandler.getMimeType());
    if (cfg != null) {
        try {
            List<AFPFontInfo> fontList = buildFontListFromConfiguration(cfg, eventProducer);
            fontCollections.add(new AFPFontCollection(
                    userAgent.getEventBroadcaster(), fontList));
        } catch (ConfigurationException e) {
            eventProducer.invalidConfiguration(this, e);
            LogUtil.handleException(log, e,
                    userAgent.getFactory().validateUserConfigStrictly());
        }
    } else {
        fontCollections.add(new AFPFontCollection(userAgent.getEventBroadcaster(), null));
    }

    fontManager.setup(fontInfo,
            fontCollections.toArray(
                    new FontCollection[fontCollections.size()]));
    documentHandler.setFontInfo(fontInfo);
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:28,代码来源:AFPRendererConfigurator.java


示例20: configureImageLoading

import org.apache.avalon.framework.configuration.ConfigurationException; //导入依赖的package包/类
private void configureImageLoading(Configuration parent, boolean strict) throws FOPException {
    if (parent == null) {
        return;
    }
    ImageImplRegistry registry = factory.getImageManager().getRegistry();
    Configuration[] penalties = parent.getChildren("penalty");
    try {
        for (int i = 0, c = penalties.length; i < c; i++) {
            Configuration penaltyCfg = penalties[i];
            String className = penaltyCfg.getAttribute("class");
            String value = penaltyCfg.getAttribute("value");
            Penalty p = null;
            if (value.toUpperCase().startsWith("INF")) {
                p = Penalty.INFINITE_PENALTY;
            } else {
                try {
                    p = Penalty.toPenalty(Integer.parseInt(value));
                } catch (NumberFormatException nfe) {
                    LogUtil.handleException(log, nfe, strict);
                }
            }
            if (p != null) {
                registry.setAdditionalPenalty(className, p);
            }
        }
    } catch (ConfigurationException e) {
        LogUtil.handleException(log, e, strict);
    }
}
 
开发者ID:pellcorp,项目名称:fop,代码行数:30,代码来源:FopFactoryConfigurator.java



注:本文中的org.apache.avalon.framework.configuration.ConfigurationException类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java View类代码示例发布时间:2022-05-22
下一篇:
Java RepositoryInfo类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap