Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(649)

Side by Side Diff: java/org/chromium/distiller/SchemaOrgParserAccessor.java

Issue 1705123002: Add support for Schema.org/Recipe Base URL: https://github.com/chromium/dom-distiller.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.distiller; 5 package org.chromium.distiller;
6 6
7 import org.chromium.distiller.proto.DomDistillerProtos.TimingInfo; 7 import org.chromium.distiller.proto.DomDistillerProtos.TimingInfo;
8 8
9 import com.google.gwt.dom.client.Element; 9 import com.google.gwt.dom.client.Element;
10 10
11 import java.util.ArrayList; 11 import java.util.ArrayList;
12 import java.util.HashSet;
12 import java.util.List; 13 import java.util.List;
14 import java.util.Set;
13 15
14 /** 16 /**
15 * This class instantiates SchemaOrgParser and implements MarkupParser.Accessor interface to provide 17 * This class instantiates SchemaOrgParser and implements MarkupParser.Accessor interface to provide
16 * access to properties that SchemaOrgParser has parsed. 18 * access to properties that SchemaOrgParser has parsed.
17 */ 19 */
18 public class SchemaOrgParserAccessor implements MarkupParser.Accessor { 20 public class SchemaOrgParserAccessor implements MarkupParser.Accessor {
21
22 private static Set<SchemaOrgParser.Type> supportedTypes;
19 private final SchemaOrgParser parser; 23 private final SchemaOrgParser parser;
20 24
21 /** 25 /**
22 * The object that instantiates SchemaOrgParser and implements its MarkupPar ser.Accessor 26 * The object that instantiates SchemaOrgParser and implements its MarkupPar ser.Accessor
23 * interface. 27 * interface.
24 */ 28 */
25 public SchemaOrgParserAccessor(Element root) { 29 public SchemaOrgParserAccessor(Element root) {
26 this(root, (TimingInfo) null); 30 this(root, (TimingInfo) null);
27 } 31 }
28 32
29 public SchemaOrgParserAccessor(Element root, TimingInfo timingInfo) { 33 public SchemaOrgParserAccessor(Element root, TimingInfo timingInfo) {
30 parser = new SchemaOrgParser(root, timingInfo); 34 parser = new SchemaOrgParser(root, timingInfo);
31 } 35 }
32 36
37 static {
wychen 2016/03/14 22:58:42 static sections tend to have performance issues in
38 supportedTypes = new HashSet<>();
39 supportedTypes.add(SchemaOrgParser.Type.RECIPE);
40 }
41
33 @Override 42 @Override
34 public String getTitle() { 43 public String getTitle() {
35 String title = ""; 44 String title = "";
36 List<SchemaOrgParser.ArticleItem> articles = parser.getArticleItems(); 45 List<SchemaOrgParser.ArticleItem> articles = parser.getArticleItems();
37 46
38 // Get the "headline" property of the first article that has it. 47 // Get the "headline" property of the first article that has it.
39 for (int i = 0; i < articles.size() && title.isEmpty(); i++) { 48 for (int i = 0; i < articles.size() && title.isEmpty(); i++) {
40 title = articles.get(i).getStringProperty(SchemaOrgParser.HEADLINE_P ROP); 49 title = articles.get(i).getStringProperty(SchemaOrgParser.HEADLINE_P ROP);
41 } 50 }
42 51
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 @Override 164 @Override
156 public MarkupParser.Article getArticle() { 165 public MarkupParser.Article getArticle() {
157 List<SchemaOrgParser.ArticleItem> articles = parser.getArticleItems(); 166 List<SchemaOrgParser.ArticleItem> articles = parser.getArticleItems();
158 return articles.isEmpty() ? null : articles.get(0).getArticle(); 167 return articles.isEmpty() ? null : articles.get(0).getArticle();
159 } 168 }
160 169
161 @Override 170 @Override
162 public boolean optOut() { 171 public boolean optOut() {
163 return false; 172 return false;
164 } 173 }
174
175 /**
176 * Get schema.org parsed content.
177 *
178 * Content is generated when a main entity is identified or
179 * has only one entity item parsed and it is supported
180 *
181 * @return HTML output from the supported item.
182 */
183 @Override
184 public String getStructuredData() {
185 String output = "";
186 SchemaOrgParser.ThingItem entity = parser.getMainEntity();
187 List<SchemaOrgParser.ThingItem> topLevelEntities =
188 parser.getTopLevelEntities();
189 if (entity == null && topLevelEntities.size() == 1) {
190 entity = topLevelEntities.get(0);
191 }
192 if (entity != null && supportedTypes.contains(entity.getType())) {
193 output = entity.generateOutput();
194 }
195 return output;
196 }
165 } 197 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698