在一个应用程序中,我有一个任务是创建将由第三方使用的文件.实际上文件中有三种不同类型的内容:
现在我只有一个类FileGenerator
(通用,我认为是坏名称)接收数据并创建一个具有一些名称约定的文件(时钟代码,文件类型,日期和小时).
有一个很好的设计模式,以确保文件名约定将保留,并为每种类型的文件分割特定类中的文件生成?
有一种很好的方法可以重用生成文件的代码(不要在特定的类中重复自己)?
这是现有课程的一部分:
class FileGenerator {
private List<String> contentOfFile;
private String fileName;
//I - include employees
//C - change employees
//R - remove employees
//B - collect biometry
//N - interval of numbers
private String option;
private void getFileName(){ ... } //this assure the file name convention
public void generate(){ ... } //this generate the file with content
}
Run Code Online (Sandbox Code Playgroud)
到目前为止我的想法:
abstract class
以保存名称约定.并将内容写入文件.factory class
知道所有类型文件的工厂(工厂是一个很好用的模式吗?).我正在尝试理解Maven中Java和Groovy项目的正确设置,使用groovy-eclipse-compiler编译源文件.
根据该插件的网站,如果你有文件src/main/java
和src/test/java
编译器应该在默认情况下找到Java和Groovy的.
设置build
类似示例使得为target/classes
空.
<build>
...
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
<!-- set verbose to be true if you want lots of uninteresting messages -->
<!-- <verbose>true</verbose> -->
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.7.0-01</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
我发现使其工作的唯一方法是使用build-helper-maven-plugin
.这也是Archetype使用的选项:
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.groovy \
-DarchetypeArtifactId=groovy-eclipse-quickstart \
-DarchetypeVersion=2.5.2-SNAPSHOT \
-DgroupId=foo \
-DartifactId=bar \
-Dversion=1 \
-DinteractiveMode=false \
-DarchetypeRepository=https://nexus.codehaus.org/content/repositories/snapshots/
Run Code Online (Sandbox Code Playgroud)
那么,它的页面已经过时了吗?src文件夹中是否有足够的Java文件?
我正在获取groovyx.net.http.HttpResponseException: Not Found
并希望查看来自的日志HTTPBuilder
。我正在将Groovy 2.1.9与一起使用groovyConsole
。
因此,我检查了该博客文章,其中提到有关添加log4j.xml
到的信息groovy.home/conf/
。我做到了,这是我的文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} %-5p %c{1} - %m%n" />
</layout>
</appender>
<category name="groovyx.net.http">
<priority value="DEBUG" />
</category>
<!-- Use DEBUG to see basic request/response info;
Use TRACE to see headers for HttpURLClient. -->
<category name="groovyx.net.http.HttpURLClient">
<priority value="INFO" />
</category>
<category name="org.apache.http"> …
Run Code Online (Sandbox Code Playgroud) 假设我有一个拥有1000个并发用户的应用程序.
测量Tomcat性能的最佳方法是什么?如何确定最大数据库连接数(池)?
如何追踪内存泄漏,cpu泄漏?
我有一个扩展JDialog的类,它有一个窗口监听器:
class MyClass extends JDialog {
public MyClass() {
setDefaultCloseOperation( JDialog.DO_NOTHING_ON_CLOSE );
addWindowListener( new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.out.println("closing...");
//do something...
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
当我点击X按钮时,没有任何反应.我没有看到"关闭......"的印刷品
我错过了什么?
在SQL Server中可以创建这样的表:
create table test (
[TimeStamp_test] [datetime] NOT NULL DEFAULT (getutcdate())
);
Run Code Online (Sandbox Code Playgroud)
我们有类似的对任何事物getutcdate()
的oracle
?
我知道使用SELECT SYS_EXTRACT_UTC FROM DUAL
(即使用插入此表的触发器).
如果还有其他简单的选择,请告诉我,谢谢.
我试图找出为什么我的keyup事件没有被触发.我创建了一个UpperCaseTextField(在Sencha Architect内部)并以一种形式(链接)使用它.
Ext.define('MyApp.view.UpperCaseTextField', {
extend: 'Ext.form.field.Text',
alias: 'widget.uppercasetextfield',
initComponent: function () {
var me = this;
Ext.applyIf(me, {
listeners: {
keyup: {
fn: me.onTextfieldKeyup,
scope: me
}
}
});
me.callParent(arguments);
},
onTextfieldKeyup: function (textfield, e, eOpts) {
var me = this;
alert('keyup');
var upper = me.getValue().toUpperCase();
me.setValue(upper);
}
});
Run Code Online (Sandbox Code Playgroud)
我错过了什么或listeners
配置应该工作?