Android Open Source - AnkiStats Function X Y Atom From Project Back to project page AnkiStats .
License The source code is released under:
GNU General Public License
If you think the Android project AnkiStats listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code package com.wildplot.android.parsing.AtomTypes;
/ / f r o m w w w . j a v a 2 s . c o m
import com.wildplot.android.parsing.*;
import java.util.regex.Pattern;
/**
* @author Michael Goldbach
*/
public class FunctionXYAtom implements TreeElement {
public Atom.AtomType getAtomType() {
return atomType;
}
private Atom.AtomType atomType = Atom.AtomType.FUNCTION_X;
private TopLevelParser parser;
private Expression expressionLeft;
private Expression expressionRight;
private String funcName;
public FunctionXYAtom(String funcString, TopLevelParser parser){
this.parser = parser;
boolean isValid = init(funcString);
if (!isValid){
this.atomType = Atom.AtomType.INVALID;
}
}
private boolean init(String funcString){
int leftBracket = funcString.indexOf("(" );
int rightBracket = funcString.lastIndexOf(")" );
int comma = funcString.indexOf("," ); //see if there even is a comma
if (leftBracket > 1 && rightBracket > leftBracket+1 && comma > leftBracket && comma < rightBracket){
//test all commas
for (int i = leftBracket +1; i< rightBracket; i++){
if (funcString.charAt(i) == ',' ){
comma = i;
}
String funcName = funcString.substring(0, leftBracket);
Pattern p = Pattern.compile("[^a-zA-Z0-9]" );
boolean hasSpecialChar = p.matcher(funcName).find();
if (hasSpecialChar || !(funcName.length() > 0)){
this.atomType = Atom.AtomType.INVALID;
return false;
}
String leftExpressionString = funcString.substring(leftBracket+1, comma);
String rightExpressionString = funcString.substring(comma+1, rightBracket);
Expression leftExpressionInBrackets = new Expression(leftExpressionString, parser);
Expression rightExpressionInBrackets = new Expression(rightExpressionString, parser);
boolean isValidLeftExpression = leftExpressionInBrackets.getExpressionType() != Expression.ExpressionType.INVALID;
boolean isValidRightExpression = rightExpressionInBrackets.getExpressionType() != Expression.ExpressionType.INVALID;
if (isValidLeftExpression && isValidRightExpression){
this.atomType = Atom.AtomType.FUNCTION_X;
this.funcName = funcName;
this.expressionLeft = leftExpressionInBrackets;
this.expressionRight = rightExpressionInBrackets;
return true;
}
}
}
return false;
}
@Override
public double getValue() throws ExpressionFormatException{
if (atomType != Atom.AtomType.INVALID){
return parser.getFuncVal(funcName, expressionLeft.getValue(), expressionRight.getValue());
}
else
throw new ExpressionFormatException("Number is Invalid, cannot parse" );
}
@Override
public boolean isVariable() throws ExpressionFormatException{
if (atomType != Atom.AtomType.INVALID){
return expressionLeft.isVariable() || expressionRight.isVariable();
}
else
throw new ExpressionFormatException("Number is Invalid, cannot parse" );
}
}
Java Source Code List com.wildplot.android.ankistats.AnkiDb.java com.wildplot.android.ankistats.AnkiStatsActivity.java com.wildplot.android.ankistats.AnkiStatsApplication.java com.wildplot.android.ankistats.AnswerButton.java com.wildplot.android.ankistats.ApplicationTest.java com.wildplot.android.ankistats.CardsTypes.java com.wildplot.android.ankistats.CollectionData.java com.wildplot.android.ankistats.Forecast.java com.wildplot.android.ankistats.HourlyBreakdown.java com.wildplot.android.ankistats.Intervals.java com.wildplot.android.ankistats.ReviewCount.java com.wildplot.android.ankistats.Utils.java com.wildplot.android.ankistats.WeeklyBreakdown.java com.wildplot.android.parsing.Atom.java com.wildplot.android.parsing.ExpressionFormatException.java com.wildplot.android.parsing.Expression.java com.wildplot.android.parsing.Factor.java com.wildplot.android.parsing.Pow.java com.wildplot.android.parsing.Term.java com.wildplot.android.parsing.TopLevelParser.java com.wildplot.android.parsing.TreeElement.java com.wildplot.android.parsing.AtomTypes.FunctionXAtom.java com.wildplot.android.parsing.AtomTypes.FunctionXYAtom.java com.wildplot.android.parsing.AtomTypes.MathFunctionAtom.java com.wildplot.android.parsing.AtomTypes.NumberAtom.java com.wildplot.android.parsing.AtomTypes.VariableAtom.java com.wildplot.android.parsing.AtomTypes.XVariableAtom.java com.wildplot.android.parsing.AtomTypes.YVariableAtom.java com.wildplot.android.rendering.AdvancedPlotSheet.java com.wildplot.android.rendering.BarGraph.java com.wildplot.android.rendering.DrawableContainer.java com.wildplot.android.rendering.FunctionDrawer.java com.wildplot.android.rendering.FunctionDrawer_y.java com.wildplot.android.rendering.Integral.java com.wildplot.android.rendering.LegendDrawable.java com.wildplot.android.rendering.LinesPoints.java com.wildplot.android.rendering.Lines.java com.wildplot.android.rendering.MultiScreenPart.java com.wildplot.android.rendering.PieChart.java com.wildplot.android.rendering.PlotSheet.java com.wildplot.android.rendering.PointDrawer2D.java com.wildplot.android.rendering.RelativeColorGradient.java com.wildplot.android.rendering.ReliefDrawer.java com.wildplot.android.rendering.XAxisBarGraph.java com.wildplot.android.rendering.XAxisHistoGram.java com.wildplot.android.rendering.XAxis.java com.wildplot.android.rendering.XGrid.java com.wildplot.android.rendering.YAxisBarGraph.java com.wildplot.android.rendering.YAxisHistoGram.java com.wildplot.android.rendering.YAxis.java com.wildplot.android.rendering.YGrid.java com.wildplot.android.rendering.graphics.wrapper.BasicStroke.java com.wildplot.android.rendering.graphics.wrapper.BufferedImage.java com.wildplot.android.rendering.graphics.wrapper.Color.java com.wildplot.android.rendering.graphics.wrapper.FontMetrics.java com.wildplot.android.rendering.graphics.wrapper.Graphics2D.java com.wildplot.android.rendering.graphics.wrapper.Graphics.java com.wildplot.android.rendering.graphics.wrapper.Rectangle.java com.wildplot.android.rendering.graphics.wrapper.Stroke.java com.wildplot.android.rendering.interfaces.Drawable.java com.wildplot.android.rendering.interfaces.Function2D.java com.wildplot.android.rendering.interfaces.Function3D.java com.wildplot.android.rendering.interfaces.Legendable.java com.wildplot.android.rendering.interfaces.StepFunction2D.java