私はJavaを初めて使いました。私は過去数週間、Webアプリケーションを修正しようとしていました。私は2つに分割する必要があるmysqlテーブルにリンクされたリストを取得しました(1回目と2回目のワークブレークのリストと3回目のワークブレークのリスト)。私は、画面上のワークブレーク・メッセージを取得切断のいずれかであるとき、私は時にしたいブレーク1ブレイク2用の3行が含まれているし、今3ブレークworkbreakテーブルリストを分割するにはどうすればいいですか?
private List<Workbreak> workbreaks = new ArrayList<Workbreak>();
@OneToMany(fetch= FetchType.EAGER, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(name = "workbreak", joinColumns = {@JoinColumn(name="conveyorId")}, inverseJoinColumns={@JoinColumn(name="Id")})
public List<Workbreak> getWorkbreaks() {
return workbreaks;
}
public void setWorkbreaks(List<Workbreak> workbreaks) {
this.workbreaks = workbreaks;
}
:このように今の私のリストが見えます別のメッセージを表示するには、ブレーク3です。
<FRAMESET ROWS="100%" border="0" bordercolor="black" onLoad="starttime()">
<% monitor.refreshInformation(request.getParameter("conveyorId"));%>
<%if (monitor.getCurrentResultSet() == null){%>
<FRAME SRC="conveyorShiftbreak.jsp" SCROLLING=NO NAME=MAIN>
<%}else {
if (monitor.getCurrentResultSet().isWorkBreak()){ %>
<FRAME SRC="conveyorWorkbreak.jsp" SCROLLING=YES NAME=MAIN>
<%} else {%>
<FRAME SRC="conveyorMonitor.jsp" SCROLLING=NO NAME=MAIN>
<%}%>
<%}%>
だから私はすべての休憩をカバーisWorkBreakを得た:
これらは、それが破損したりされていないかどうかを確認する方法です。
boolean isWorkBreak = false;
public boolean isWorkBreak(){
try{
isWorkBreak = false;
Date current = Utils.getCalendarToTime(java.util.Calendar.getInstance());
int offset = TimeZone.getDefault().getOffset(current.getTime());
java.util.Calendar calclone = java.util.Calendar.getInstance();
calclone.setTime(current);
calclone.add(java.util.Calendar.MILLISECOND, offset);
long currentTime = calclone.getTimeInMillis();
String sfStart = Utils.getFormatedTime(getShift().getStartTime());
long shiftStart = Utils.parseTimestamp(sfStart).getTimeInMillis();
String sfEnd = Utils.getFormatedTime(getShift().getEndTime());
long shiftEnd = Utils.parseTimestamp(sfEnd).getTimeInMillis();
long shift = getShiftMinutes(sfStart, sfEnd);
List<Workbreak> workbreaks = getWorkbreaks();
for (Workbreak workbreak :workbreaks){
String wbStart = Utils.getFormatedTime(workbreak.getStartTime());
String wbEnd = Utils.getFormatedTime(workbreak.getEndTime());
long wTimeFrame = getShiftMinutes(wbStart, wbEnd);
if (wTimeFrame >0){
long workbreakStart = Utils.parseTimestamp(wbStart).getTimeInMillis();
long workbreakEnd = Utils.parseTimestamp(wbEnd).getTimeInMillis();
//do correction
if (workbreakStart <shiftStart){//shift is in the next day
workbreakStart += 24*60*60*1000; //add one day
workbreakEnd += 24*60*60*1000; //add one day
}
if (shiftStart <= workbreakStart && currentTime<shiftStart){//curent time is next day
currentTime += 24*60*60*1000; //add one day
}
if (currentTime > workbreakStart && currentTime < workbreakEnd){
isWorkBreak = true;
workbrakeRemaingMinutes = (workbreakEnd - currentTime)/1000/60;
break;
}
}
}
}
catch (Exception e) {
logger.error("!!!ERROR isWorkBreak" + e.getMessage());
}
return isWorkBreak;
}
それでは、私が試したことは、同じテーブル「workbreak」にリンクされている新しいリストを作成し、そしてisWorkBreak2内部の第三休憩をカバーするものです。しかし、今でも私はgetCurrentResultSet().isWorkBreak
またはgetCurrentResultSet().isWorkBreak2
でも画面上に同じメッセージが表示されます。
<% monitor.refreshInformation(request.getParameter("conveyorId"));%>
<%if (monitor.getCurrentResultSet() == null){%>
<FRAME SRC="conveyorShiftbreak.jsp" SCROLLING=NO NAME=MAIN>
<%}else if (monitor.getCurrentResultSet().isWorkBreak2()){ %>
<FRAME SRC="conveyorSDiscussion.jsp" SCROLLING=YES NAME=MAIN>
<%}else if (monitor.getCurrentResultSet().isWorkBreak()){ %>
<FRAME SRC="conveyorWorkbreak.jsp" SCROLLING=NO NAME=MAIN>
<%}else {%>
<FRAME SRC="conveyorMonitor.jsp" SCROLLING=NO NAME=MAIN>
<%} %>
私は2でリストを分割し、それが別のメッセージを表示させることができる方法任意のヒント?ありがとう!
workbreakNumberを追加します。ここでは
は、あなたのテーブル構造が示されていないので、状況は完全には明らかではないが、おそらくこれは、任意の簡単な解決策になる可能性がされてtabel「workbreak」
テーブル構造も追加しました –