/**
* This file is part of Owlet.
*
* Owlet is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Owlet is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Owlet. If not, see <http://www.gnu.org/licenses/>.
*/
package com.sibext.owlet.view.conclusion;
import java.util.ArrayList;
import com.sibext.owlet.view.BaseTaskImageView;
import com.sibext.owlet.view.TaskImageFactory;
import com.sibext.owlet.view.renderer.ConclusionRenderer;
import com.sibext.owlet.view.renderer.Renderer;
import android.content.Context;
import android.util.Log;
public class ConclusionViewFactory {
public static final String EXAMPLE_FIELD = "EXAMPLE_ID";
public static final String EXAMPLE_ANSWER_FIELD = "EXAMPLE_ANSWER_ID";
public static final String TEST_FIELD = "TEST_ID";
public static final String TEST_ANSWER_FIELD = "TEST_ANSWER_ID";
public static final String VARIANTS_FIELD = "variants";
public static final int SIMPLE_VIEW_MODE = 0;
public static final int TRANSFORM_VIEW_MODE = 1;
private static final String TAG = "ConclusionViewFactory";
public static final int COLORS_SIZE = 7;
private Context context;
private Class<?> type;
private Renderer renderer;
private int[] colors;
private boolean colorFlag;
private int mode;
private TransformView trans;
public ConclusionViewFactory(Context context,
ConclusionRenderer conRenderer, int mode) {
this.context = context;
this.type = conRenderer.getType();
this.colorFlag = conRenderer.getColorFlag();
this.colors = conRenderer.getColors();
this.mode = mode;
if (mode == TRANSFORM_VIEW_MODE) {
trans = TaskImageFactory.getTransformeView(type, context, conRenderer);
}
}
public BaseTaskImageView getExample(){
switch (mode) {
case TRANSFORM_VIEW_MODE:
return trans.getExampleImage();
default:
renderer = new Renderer();
renderer.setColorFlag(colorFlag);
renderer.setColor(colors[0]);
int id = 0;
try {
id = (int)type.getField(EXAMPLE_FIELD).getInt(null);
} catch (Exception e) {
Log.d(TAG," problem with getting value from static field"+type,e);
}
renderer.setId(id);
return TaskImageFactory.getImageView(type, context, renderer);
}
}
public BaseTaskImageView getExampleAnswer() {
switch (mode) {
case TRANSFORM_VIEW_MODE:
return trans.getExampleAnswerImage();
default:
renderer = new Renderer();
renderer.setColorFlag(colorFlag);
renderer.setColor(colors[1]);
int id = 0;
try {
id = (int)type.getField(EXAMPLE_ANSWER_FIELD).getInt(null);
} catch (Exception e) {
Log.d(TAG," problem with getting value from static field",e);
}
renderer.setId(id);
return TaskImageFactory.getImageView(type, context, renderer);
}
}
public BaseTaskImageView getTest() {
switch (mode) {
case TRANSFORM_VIEW_MODE:
return trans.getTestImage();
default:
renderer = new Renderer();
renderer.setColorFlag(colorFlag);
renderer.setColor(colors[2]);
int id = 0;
try {
id = (int)type.getField(TEST_FIELD).getInt(null);
} catch (Exception e) {
Log.d(TAG," problem with getting value from static field",e);
}
renderer.setId(id);
return TaskImageFactory.getImageView(type, context, renderer);
}
}
public BaseTaskImageView getTestAnswer() {
switch (mode) {
case TRANSFORM_VIEW_MODE:
return trans.getTestAnswerImage();
default:
renderer = new Renderer();
renderer.setColorFlag(colorFlag);
renderer.setColor(colors[3]);
int id = 0;
try {
id = (int)type.getField(TEST_ANSWER_FIELD).getInt(null);
} catch (Exception e) {
Log.d(TAG," problem with getting value from static field",e);
}
renderer.setId(id);
return TaskImageFactory.getImageView(type, context, renderer);
}
}
public ArrayList<BaseTaskImageView> getVariants() {
switch (mode) {
case TRANSFORM_VIEW_MODE:
return trans.getVariants();
default:
ArrayList<Integer> var = null;
try {
var = (ArrayList<Integer>)type.getField(VARIANTS_FIELD).get(null);
} catch (Exception e) {
Log.d(TAG," problem with getting value from static field"+type,e);
}
ArrayList<BaseTaskImageView> res = new ArrayList<BaseTaskImageView>();
for (int i = 0; i < var.size(); i++) {
renderer = new Renderer();
renderer.setColorFlag(colorFlag);
renderer.setColor(colors[(i + 4) % COLORS_SIZE]);
renderer.setId(var.get(i));
res.add(TaskImageFactory.getImageView(type, context, renderer));
}
return res;
}
}
}